1、open与with open区别
open()完成后必须调用close()方法关闭文件,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的,由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。with open()则可以避免这样的情况。
2、代码
#文件的读操作 with open('input_filename.txt','r') as f:#r为标识符,表示只读 df=pd.read_csv(f) print(f.read()) ''' 其他标识符: r: 以只读方式打开文件。 rb: 以二进制格式打开一个文件用于只读。 r+: 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+:以二进制格式打开一个文件用于读写。 ''' #文件的写操作 with open('output_filename.csv', 'w') as f: f.write('hello world') ''' 其他标识符: w: 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb: 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 w+: 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab: 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+: 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 '''
3、方法和属性
f.read([size]) #将文件数据作为字符串返回,可选参数size控制读取的字节数 f.readlines([size]) #返回文件中行内容的列表,size参数可选 f.write(str) #将字符串写入文件 f.writelines(strings) #将字符串序列写入文件 f.close() #关闭文件 f.closed #返回布尔值,文件已经被关闭为True,否则为False f.mode #Access文件打开时使用的访问模式 f.encoding #文件所使用的编码 f.name #文件名 f.newlines #未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束的列表 f.softspace #为0表示在输出一数据后,要加上一个空格符,1表示不加。这个属性一般程序员用不着,由程序内部使用
4、注意
要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数
读取时调用read()将一次性读取文件的全部内容,如果文件有10G,内存就爆了,保险起见可反复调用read(size)方法,每次最多读取size个字节的内容。
调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。
根据需要调用:如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便