Python 文件操作

来源:互联网 发布:linux shell的expect 编辑:程序博客网 时间:2024/06/05 16:01

跟其他编程语言一样,Python在做文件操作时,必须先打开一个文件,并且在文件操作完毕后,必须关闭这个文件。

file对象属性

一旦文件被打开,文件对象就可以得到该文件的各种信息。下面是文件对象所有的属性列表:

属性 

 描述

File.closed                       

 如果文件被关闭则返回True,否则返回False

File.mode

 返回文件被打开的访问模式

File.name

 返回文件的名称

File.softspace

 如果用print输出后,必须跟一个空格符,则返回False,否则返回True

File.encoding

 返回文件编码

File.newlines

 文件中用到的换行模式,是一个tuple对象


Python文件操中常用的函数

fp = open(file_name[,access_mode [, buffering]]) 直接打开一个文件,返回的fp是一个指向文件的指针(一个文件对象)。当以只读模式(r)打开一个不存在的文件时,就会报IOError异常(文件不存在),但如果是以写或追加模式(w/a/a+)打开一个不存在的文件时,默认会创建该文件,但如果是所在路径中有目录不存在,也会报IOError异常。

各个参数的细节如下:

  • file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
  •  access_mode:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的文件操作模式。这个参数是非强制的,默认文件访问模式为只读(r)。
  •  buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

如:

>>> fp = open( "c:\\a.txt",'w')

文件的操作模式(即mode 参数)有:

r       以读方式打开文件。文件指针放于文件开头,这也是默认模式。

w     以写方式打开,如文件存在则覆盖,如不存在则创建。

a      以追加模式打开 (EOF开始,必要时创建新文件)

r+     以读写模式打开,文件指针放于文件开头。

w+    以读写模式打开,并且清除文件原有内容。如果文件不存在则创建。

a+     以读写模式打开文件,并将文件指针移动到文件尾(参照a)。文件不存在则创建。

rb      以二进制读模式打开,文件指针放于文件开头。

wb     以二进制写模式打开 (参见 w)

ab      以二进制追加模式打开 (参见 a)

rb+     以二进制读写模式打开 (参见r+ ),文件指针放于文件开头。

wb+    以二进制读写模式打开 (参见w+ )

ab+     以二进制读写模式打开 (参见a+ )

fp.read( [size] )     size为读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个"\n"。

fp.readline( [size] )   读一行,如果给定了size,有可能返回的只是一行的一部分,以字符串的形式返回,并且结尾会有一个换行符"\n"。

fp.readlines( [size]) 把文件每一行作为一个list的一个成员,是一个字符串,并且结尾会有一个换行符"\n",并返回这个list。这个函数的内部是通过循环调用readline()来实现的。如果指定了size参数,表示读取文件指定内容的长度,此时就有可能只能读取文件的一部分,并且结尾会有一个换行符"\n"。

fp.write(str)  把str写到文件中,默认是不加换行符的,所以如果想换行的话,得手动加入换行符'\n'。

fp.writelines(seq)  把seq的内容全部写到文件中(多行一次性写入)。也不会自动加入换行符。

fp.close() 关闭文件。在文件操作结束后,必须要养成关闭文件的良好习惯,虽然python会在文件不操作后自动关闭。如果文件关闭后,还对文件进行操作就会产生ValueError错误,但如果不及时关闭文件,有可能产生句柄泄露,丢失数据。

fp.flush() 将缓冲区中的内容写入硬盘。

fp.next() 返回下一行,并将文件操作标记位移动到下一行。把一个file用for...in file这样的循环遍历语句时,就是调用next()函数来实现。

fp.fileno()  返回一个长整型的文件标签

fp.isatty() 文件是否是一个终端设备文件(nuix)系统中的。

fp.tell() 返回文件操作标记的当前位置,以文件的开头为基准点。

fp.seek(offset[, whence]) 将文件的操作标记移动offset个长度,这个offset一般相对于文件开头位置。参数whence默认为0,表示以文件开头为基准点计算;1表示以当前位置的基础上向后再移动offset个字符的位置开始读取;2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

fp.truncate( [size] ) 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。



0 0