设为首页 收藏本站
查看: 505|回复: 0

[经验分享] Python 文件操作 和 目录操作

[复制链接]

尚未签到

发表于 2017-5-2 09:09:45 | 显示全部楼层 |阅读模式
  我们知道,文件名、目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名、目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfile函数、isdir函数和islink函数来达成我们的目标,如下所示:
  print myfile, ’是一个’,

  if os.path.isfile(myfile):

  print ’plain file’

  if os.path.isdir(myfile):

  print ’directory’

  if os.path.islink(myfile):

  print ’link’
  您还可以查找文件的日期及其大小:
  time_of_last_access = os.path.getatime(myfile)

  time_of_last_modification = os.path.getmtime(myfile)

  size = os.path.getsize(myfile)
  这里的时间以秒为单位,并且从1970年1月1日开始算起。为了获取以天为单位的最后访问日期,可以使用下列代码:
  import time # time.time()返回当前时间

  age_in_days = (time.time()-time_of_last_access)/(60*60*24)
  为了获取文件的详细信息,可以使用os.stat函数和stat模块中的其它实用程序来达到目的,如下:
  import stat

  myfile_stat = os.stat(myfile)

  size = myfile_stat[stat.ST_SIZE]

  mode = myfile_stat[stat.ST_MODE]

  if stat.S_ISREG(mode):

  print ’%(myfile)是一个常规文件,大小为 %(size)d 字节’ %\

  vars()
  有关stat模块的详细信息,请参见Python Library Reference。若想测试一个文件的读、写以及执行权限,可以用os.access函数,具体如下所示:
  if os.access(myfile, os.W_OK):

  print myfile, ’具有写权限’

  if os.access(myfile, os.R_OK | os.W_OK | os.X_OK):

  print myfile, ’具有读、写以及执行权限’
  http://tech.it168.com/a2009/0708/602/000000602694_1.shtml
          在很多应用中,文件操作是一个基本的功能,也是很重要的一部分.相对于其他语言来说,python对文件操作非常简单
  读和写:
       从文本中读取数据和把数据写进文本是文本的基本操作.这个非常简单.我们打开一个文本准备写数据:
       fp = open ( "test.txt", "w" )
       "w"表明我们将要把数据写到文本中.剩下的就比较容易理解.下一步实把数据写进文本中:
        fp.write ( ' This is a test. \nReady, it is. ' )
        这就把字符串"This is a test."写进文本的第一行,"Really , it is."写到了第二行.最后,我们需要清理和关闭文本.
       fp.close( )
         正如你所看到的,这个很容易,特别是对python的对象.但要清楚,当你使用"w"模式去再次写数据到文本中的时候,文本中的所有内容都会背删除掉.为了解决这个问题,可以使用"a"模式去把数据追加到文本末尾,添加数据到末尾:
         fp = open ( ' test.txt ', ' a ' )
         fp.write ( ' \n\n\nBottom line. ' )
         fp.close (  )
          现在我们把文本的数据读出来并显示:
         fp = open ( ' test.txt ' )
          print  fp.read ( )
         fp.close( )
          这把文本中数据全部读取出来并显示出来.我们也可以读取文本中的一行数据:
         fp = open ( ' test.txt ' )
          print fp.readline ( ) # " This is a test . "
          同样也可以把文本中的所有行存储到一个list中:
           fp = open ( ' test.txt ' )
           fileList = fp.readlines( )
           for fileline in fileList :
                 print '>>', fileline
           fp.close( )
           当在从文本中读取数据时,Python会记住指针在文本中的位置,如下例子:
           fp = open ( ' test.txt ' )
           garbage = fp.readline( )
           fp.readline ( ) # "Really, it is. "
           fp.close ( )
           只有第二行显示出来.当然,我们也可以通过把指针定位到其他地方来读取数据.
           fp = open ( 'test.txt' )
           garbage = fp.readline ( )
           fp .seek ( 0 )
           print  fp.readline ( ) # " This is a test . "
           fp.close ( )
           由上面的例子可以知道,我们可以告诉python继续从文本的第一个字节开始读取数据. 因此,第一行数据被打印出来. 我们同样可以要求python告诉指针当前位置:
           fp = open ( ' test.txt ' )
           print  fp.readlien ( )  # " This is a test "
           print  fp .tell ( 0 )  # " 17 "
           print fp.readline( )   # " Really , it is "    
          同样,一次也可以读取指定字节数的数据:
          fp  = open ( ' test.txt ' )
          print fp ( 1 ) # " T "
          fp.seek ( 4 )
          print fp.read ( 1 ) # " T "
          当我们在Windows 和 Macintosh平台时,有时候可以需要以二进制的模式来写数据,比如图片文件.为了做到这点,只要以"b"模式打开文本:
          fp = open ( ' testBinary.txt ', ' wb ' )
          fp.write ( ' There is no spoon. ' )
          fp.close ( )
          fp = open ( ' testBinary.txt ' , ' rb ' )
          print fp.read ( )
          fp .close ( )

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371900-1-1.html 上篇帖子: Exoweb 下篇帖子: protocal buffer 之Java与python交互
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表