打开文件
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file: 文件路径(相对或者绝对路径)。
mode: 文件打开模式,r表示是文本文件,rb是二进制文件(默认值就是r)
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener:
try:
# 常用格式
file = open('data', 'r', encoding='UTF-8')
# 打开文件后的操作
finally:
if file:
file.close()
用try包围是防止open的文件不存在,此时Python会报IOError的错误,对此Python提供一个简单的写法:
with open('/path/data', 'r') as file:
# 打开文件后的操作
对于文件打开模式:
1、r 打开只读文件,该文件必须存在
2、r+ 打开可读写的文件,该文件必须存在
3、w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
4、w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
5、a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
6、a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
7、上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。
读取文件(#打开文件后的操作)
1.读取全文件
content = file.read(size)
size:从文件中读取的字节数
contents = file.read()
print(contents)
2.读取所有行并返回列表
content = file.readlines()
for line in file.readlines(): #读取列表中的每个元
line = line.strip() #去掉每行头尾空白
print "读取的数据为: %s" % (line)
3.读取一行
content = file.readline()
line = file.readline()
print(file.readline().strip())
4.逐行读取
for line in file:
print(line.strip())
写文件
写文件时,打开文件的参数要选择w,w+,a,a+其中之一
1.write(string)
string:字符串参数
with open('result', 'w') as file:
file.write('Hello, world!')
2.writelines(list)
list:列表参数
with open('result', 'w') as file:
list = ['a', 'b', 'c']
file.writelines(list)
但writelines方法不会自动换行,也就是说上面的输出结果是abc,没有空格或换行符