open("filename",encoding)
data=open("filename",encoding='utf-8').read()
w 创建一个新文件。
r 读取 ,不可写
a ,追加 ,不能读
r+ 读取n行后,写仍然从文件末尾开始写
w+写读,创建一个新文件,写就只能追加到最后。
a+
rb 二进制文件读写(网络传输、二进制文件)
(不要编码方式)
wb
ru \r\n \n 统一成\n
wu
fp = open('filename','w',encoding='utf-8')#文件句柄 w创建一个新文件。
fp = open('filename','rb')
关闭文件
f.close()
读取行
fp.readline()
将文件的每行放一起组成一个列表
fp.readlines()#读小文件
练习:
读取在第十行显示分割线
fp=open('/Users/mac/PycharmProjects/myPython/day2/goods.txt','r+',encoding='utf-8')
for index,line in enumerate(fp.readlines()):
if index == 9 :
print('---------我是分割线-----')
else :
print(line.strip())
高效,迭代器fp
fp=open('/Users/mac/PycharmProjects/myPython/day2/goods.txt','r+',encoding='utf-8')
count =0
for line in fp :
if count == 9:
print('---------我是分割线-----')
else:
print(line.strip())
count += 1
光标移动
fp=open('/Users/mac/PycharmProjects/myPython/day2/goods.txt','r+',encoding='utf-8')
fp.read(5)
fp.tell()#按字符计数
fp.seek(0)#光标回0.
fp.seekable()#终端设备不能移动光标。
fp.readable()
fp.writeable()
文件编码方式
fp.encoding()
fp.fileno()#系统中的文件句柄。
flush方法
fp.flush()#默认缓存满后再写入硬盘。flush可以即时写入硬盘
进度条
import sys,time
for i in range(50):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.1)
截断
fp.truncate()#清空
fp=open('/Users/mac/PycharmProjects/myPython/day2/goods.txt','a',encoding='utf-8')
fp.truncate(10)#从文件开始到第10个字符
修改一个文件
1、加载到内存修改完覆盖原文件
如:vim
2、改完后,写入一个新文件,
f = open('goods.txt','r',encoding='utf-8')
f_new = open('goods_new.txt','w',encoding='utf-8')
for line in f:
if "这个自行车是我的" in line :
line = line.replace('是我','是Xiaochun')
f_new.write(line)
f.close()
f_new.close()
程序练习:实现简单的shell sed的功能
import sys
f = open('goods.txt','r',encoding='utf-8')
f_new = open('goods_new.txt','w',encoding='utf-8')
find_str = sys.argv[1]
replace_str = sys.argv[2]
for line in f:
if find_str in line :
line = line.replace(find_str,replace_str)
f_new.write(line)
f.close()
f_new.close()
with 作用自动关闭文件
with open('goods.txt','r',encoding='utf-8') as f,open('goods_new.txt','r',encoding='utf-8') as f_new:
f.readline()
with open('goods.txt','r',encoding='utf-8') as f,\
open('goods_new.txt','r',encoding='utf-8') as f_new:
f.readline()