本文共 2217 字,大约阅读时间需要 7 分钟。
跟其他编程语言一样,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把文件补到相应的大小,也可能是以一些随机的内容加上去。
转载地址:http://zcmdi.baihongyu.com/