python 文件操作

来源:互联网 发布:tensorflow 关闭sess 编辑:程序博客网 时间:2024/06/15 23:29

文件对象不仅可以用来访问普通的磁盘文件,也可以访问任何其他类型抽象层面上的“文件”。一旦设置了合适的“钩子”,你就可以访问具有文件类型接口的其他对象,就好像访问普通文件一样(摘自《python核心编程》第二版)

打开文件

open( )和file( )

我们要对文件进行操作,首先要做的就是打开一个文件,python中提供了open( )和file()两个内建函数供我们使用

  • open( )基本语法如下
    flie_object = open(file_name,access_mode = ‘r’,buffering = -1)
    其中file_name 是一个字符串,就是要打开文件的路径(可以是相对路劲也可以是绝对路径)
    可选变量access_mode也是一个字符串,代表文件的打开模式,常用的有’r’读,’w’写,’a’追加
    另外一个参数buffering 用于指示访问文件所采用的缓冲方式,0代表不缓冲,1代表缓冲一行,任何大于1的值代表给定缓冲区的大小,不提供该参数或者使用负数,代表使用系统默认缓冲机制
  • file( )是一个工厂函数,具有和open( )相同的功能,可以任意替换
  • 使用open打开文件,处理后要将文件关闭,否则在程序运行结束之前都不将文件句柄释放,将一直占据内存空间,如果担心忘记,可以使用with,具体用法如下
f = open("grade.txt",'r',buffering = -1)f.read()'this is a text!'f.close()with open("grade.txt",'r') as f:    print f.read()    this is a text!
  • 文件的打开模式
文件模式说明r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。rU,Ua以读方式打开,同时提供通用换行支持w打开一个文件只用于写入。如果该文件已存在则,原文件会被清空,如果该文件不存在,创建新文件。a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。r+打开一个文件用于读写。文件指针将会放在文件的开头。w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

文件的读

  • read( )方法用来直接读取字节到字符串中,最多读取给定数目size个字节,如果没有给定或值为负,文件被读至末尾,在读取文件的时候实际上存在一个类似于指针的东西,随着读取的字节进行移动,文件读完了,指针也就移到了最末尾,通过tell()方法可以返回这个指针当前的位置。所以很多时候当你读完一个文件,又马上调用read方法时就会返回为空,因为你之前读的时候指针已经指到了末尾,这时候你又进行读,已经没有可以返回的内容给你了,通过seek方法可以将这个指针位置调到你所想读的地方。
f = open("grade.txt",'rU',buffering = -1)print f.read()1、r 打开只读文件,该文件必须存在。 2、r+ 打开可读写的文件,该文件必须存在。 3、w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失4、w+ 打开可读写文件,若文件存在则文件长度清为零,5、a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,6、a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,7、上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合print f.read()print f.tell()561f.seek(0)print f.tell()0print f.read()1、r 打开只读文件,该文件必须存在。 2、r+ 打开可读写的文件,该文件必须存在。 3、w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失4、w+ 打开可读写文件,若文件存在则文件长度清为零,5、a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,6、a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,7、上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合f.seek(0)print f.read(30)1、r 打开只读文件,该
  • readline()方法读取文件的一行,(读取下一个行结束符前的所有字节)然后整行(包括行结束符)作为字符串返回,也有一个可选参数size,默认为-1代表行结束符
f = open("grade.txt",'rU',buffering = -1)print f.readline()1、r 打开只读文件,该文件必须存在。 
  • readlines()方法读取所有(剩余的)行,然后把它们作为一个字符串列表返回(每一行为一个元素)但一般在读较大文件时不推荐使用此方法,因为这个方法,需要把一个文件中所有内容以列表形式读入内存中,十分消耗内存空间。

文件的写

  • write()方法,将字符串写入文件中,通过seek可以将定位到你想写的位置,但是当你写入字符时会将该文件原有的内容覆盖(版本2可以用seek定位,版本3好像不行)
f = open("grade.txt",'r+',buffering = -1)print f.read()jalsdjflajsdfljasldfjlaskdjflasjdfljajnladskjflakjsdklfkdjfalkjdajlsdjjf.seek(0)f.write("----------------------------------")f.flush()f.close()f = open("grade.txt",'r+',buffering = -1)print f.read()----------------------------------dfljajnladskjflakjsdklfkdjfalkjdajlsdjjlaksdjflakjfldalowiefjajjladsjflajdljfakjdks
原创粉丝点击