[python]文件操作(输入、输出)

文件对象

文件对象不仅可以访问普通的磁盘文件,也可以访问任何其他类型抽象层面的“文件”。文件只是连续的字节序列,数据的传输经常用到字节流。

1、文件内建函数(open()和file())

file_object = open(file_name,access_mode='r',buffering=-1)
  • file_name是包含要打开的文件名字的字符串,可以是相对路径,也可以是绝对路径。
  • acceess_mode 也是字符串,代表文件打开的模式。
    • 参数简介:’r’代表读取;’w’ 代表写入,该模式下打开的文件若存在则首先清空,然后 重新创建;’a’代表追加,所有追加的数据放在末尾;‘U’代表通用换行符。
    • C库函数fopen()中使用的模式也可以在python的open()下使用。包括’+’代表可读可写,’b’代表二进制模式访问。
  • buffering用于指示访问文件所采用的缓冲方式。其中0表示不缓冲,1表示只缓冲一行数据,任何大于1的值代表给定值作为缓冲大小。不提供参数或者给定负值代表使用系统默认的缓冲机制。
    访
文件模式 操作
r 以读的方式
rU或 Ua 以读方式打开,同时提供通用换行符
w 以写的方式打开(必要时清空)
a 以追加的模式打开(从EOF开始,必要时创建新文件)
r+ 以读写的方式打开
w+ 以读写的方式打开(参见w)
a+ 以读写的模式打开(参见a)
rb 以二进制读模式打开
wb 以二进制写模式打开(参见w)
ab 以二进制追加模式打开(参见a)
rb+ 以二进制读写模式打开(参见r+)
wb+ 以二进制读写模式打开(参见w+)
ab+ 以二进制读写模式打开(参见a+)

1.1工厂函数file()
open()和file()函数具有相同的功能,可以任意替换,建议用open()函数来读写文件,在你想说明您在处理文件对象时使用file(),例如

if instance(f,file)

1.2通用换行支持(UNS)

  • 不同平台用来表示结束的的符号是不同的,例如\n,\r,或者\r\n.
  • UNS(Universal NEWLINE Support)用相同的方式处理所有不同平台的文件。
  • 所有的行分隔符通过python的输入方法(例如read())返回时都会被替换成换行符NEWLINE(\n)。文件对象的newlines属性会记住它曾”看到的”文件的行结束符。
  • 如果文件打开,没有遇到行结束符,那么文件的newlines为None。第一行被读取后,newlines被设置为第一行的结束符。如果遇到其他类型的行结束符,文件的newlines属性会成为一个包含每种格式的元组。
  • UNS只用于读取文件,没有对应的处理文件输出的方法。
  • 编译python时自动打开,可手动关闭

2、文件内建方法

包括四类:输入、输出、文件内移动及杂项操作。

2.1输入

  • read()
    直接读取字节到字符串,最多读取给定数目个字节。没给出,则读取到文件末尾。未来版本可能会被删除
  • readline()
    读取文件方式打开文件的一行,整行包括行结束符,作为字符串返回。给出size参数,默认-1,代表行结束符。
  • readlines()
    读取所有行然后把他们作为一个字符串列表返回。可选参数sizhint代表字节大小,如果大于0,那么返回所有航应该大约sizhint个字节(可能稍微大于这个数字,因为需要凑齐缓冲区大小)
  • xreadlines()
    高效迭代文件的行。file.xreadlines()等价与xreadlines.xreadlines(file)。xreadlines()不是一次性读取所有的行到内存中,而是每次读取一块,所有使用for循环有效减少内存的占用。随着文件迭代的使用,没有必要使用xreadlines()方法,因为他和iter(file)的效果是一样的;在for循环中使用for eachline in file代替他。

2.2输出

  • write()
    该内建函数将文本数据或者二进制数据块的字符串读入到文件中去
  • writelines()
    • 针对列表的操作,它接受一个字符串列表作为参数,将他们写入文件
    • 行结束符不会自动加入,需要手动添加

[核心笔记]
当使用输入方法如read或readlines()从文件中读取行时,python并不会删除行结束符,这个删除行的操作需程序员自己完成,如下:

f = open('myfile','r')
data = [line.strip() for line in f]
f.close()

2.3文件内移动

  • seek()
    可以在文件中移动文件指针到不同的位置。offset代表字节代表相对于某个位置偏移量。位置的默认值为0,代表文件从开头算起,1代表从当前位置算起,2代表从末尾算起。
  • text()
    告诉你当前文件指针在文件中的位置-从开始起算起,单位为字节。

你可能感兴趣的:(Python)