zoukankan      html  css  js  c++  java
  • python操作文件

    1,python读取文件

    2,python写文件

    3,python操作文件的常用方法

    1,python读取普通文件(文件名为text.txt)

    f = open('test.txt','r')
    
    data = f.read()
    
    print data
    
    f.close()
    

      

    这样就能完成文件的读取。默认情况下打开文件是读的,所以如果你是读取文件,可以不用写'r',当然这里可以写成mode='r'.

    考虑到如果文件是非常大的话,比如1个G的文件,如果你直接使用read方法。这样会非常占用服务器的内存,这样就不太好。所以这个时候就可以考虑xreadlines。它不是一次性将内容加载的内存中。

    只有等你使用到具体的行,才会加载的内存中。这与前面的range和xrange的原理是样的。于是乎代码更改如下:

    f = open('test.txt','r')
    
    data = f.read()
    
    print data
    
    f.close()
    

      

    这里的open其实是可以用file来代替的,意思是一样的。从上面的代码发现,打开文件后经过一系列操作需要f.close()将文件关闭。关闭的原因是:如果不关闭文件的话,就会占用系统的描述符,而操作系统的描述符是有限制的。当然,python的回收机制也是处理这个问题。但是毕竟自动关闭是最佳的选择。但是每次f.close比较麻烦,所以引用with open的方式,它会自动帮我们执行f.close()函数。

    with open('test.txt','r') as f:
    
      for line in f.xreadliens():
    
        print line.strip()
    

      

    上述的操作都是针对普通文件的操作,如果需要操作二进制文件的话,操作文件的mode需要改为‘rb’或者‘wb’。具体可以参考如下图:

     2,python写文件

    with open('test.txt','w') as f:
    
      f.write('this is test')
    

      

    这样就完成基本的文件写操作,但是我们这里的模式是w,那么意味着原先的内容都被清空了,在清空文件内容的前提条件下,新增加的内容。

    如果你不想要原文件的内容被清空,那么你就需要将模式改为追加模式,即'a'.

    with open ('test.txt','a') as f:
    
      f.write('this is test')
    

      

    3,python操作文件的常用方法

    读模式:

    read()  一次性将内容全部读取出来,read读取是以字符为单位的,即read(3),表示读取的第3个字符。

    readline()  读取文件的一行,比如打开文件后,执行f.readline()则表示读取文件的第一行,再次操作,读取文件的第二行

    readlines()  读取文件的所有行,以列表的形式返回

    xreadlines()  读取文件的行,返回对象,即生成器,需要使用for循环遍历

    next()  读取文件的下一行

    seek()  指定文件指针跳到那个位置,一般用于让指针跳到起始行开头的位置。即f.seek(0),这个是以字节为单位的。

    tell()  返回指针所在的位置

    写模式:

    wirte()  将内容一次性写入到文件中

    writelines()   文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符

    flush()  将修改刷新到磁盘上,一般情况下,你这边f.write写入内容。但是你没有f.close时,你写入文件的内容是暂时的缓存在内存的。除非你f.close()才会将文件刷到磁盘中,或者你使用f.flush()这个命令将内容刷新到磁盘上

    close()  关闭文件

  • 相关阅读:
    org.hibernate.QueryException: could not resolve property
    Eclipse支持文件UTF-8编码
    Eclipse External Tool Configration Notepad++
    WIN10 devtoolsuser
    Linux查看和注销用户(User)
    java list 去重
    监控系统对比 Ganglia vs Open-falcon vs Prometheus vs Zabbix vs Nagios vs PandoraFMS
    swagger 指定字段不显示到文档里
    mysql uuid() 相同 重复
    正则校验:微信号,qq号,邮箱
  • 原文地址:https://www.cnblogs.com/lin1/p/8137533.html
Copyright © 2011-2022 走看看