f = open('123.text','w',encoding='utf-8') # 打开文件对象,'写'模式
f.write('hello world') # 写入指定字符,清空原有的字符,返回原有字符数量
f.close() # 关闭文件对象;每次打开操作完都要关闭,否则内容还在缓存中
f = open('123.text','r',encoding='utf-8') # 打开文件对象,'读'模式
print(f.read(5)) # 读取指定数量的字符,不指定则读取所有的字符
print(f.readlines()) # 把每行做成列表里的一个值,包含换行
f.close() # 关闭文件对象
for i in f: # 递归输出每行
print(i)
print(f.tell()) # 读取光标位置
f.seek(1) # 移动光标位置到指定位置,默认光标在0位置
d = eval(f.read) # 把文件里的内容按其字符格式转成对应的数据类型
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
二进制方式写入、读取
f = open('Bug.log', 'wb') # 以二进制方式写入 f.write(bytes('中国', encoding='utf-8')) # 必须先把字符转换成字节,并指定编码 f.close()
f = open('Bug.log', 'rb') # 以二进制方式读取 p = f.read() print(type(p)) print(str(p, encoding='utf-8')) # 读取出来时也要转换成字符串 f.close()
flush 刷新缓存
f = open('Bug.log', 'r+', encoding='utf-8') f.write('hehe') f.flush() # 在文件没有关闭的情况下,写入的内容不会立即存入文件,而是在缓存中, i = input('>>') # 用flush可以立即把写入的内容存入文件,而不必关闭文件。 f.close()
with as ...
with open('1.txt', 'w', encoding='utf-8') as b1, open('Bug.log', 'r', encoding='utf-8') as b2: # python2.6之后可以用with同时打开两个文件 for line in b2: # 用for循环可以一行一行读取 b1.write(line) # 依行写入到另一个文件