1、open函数用来打开文件
- open(name[, mode[, buffering]]) 打开文件可传的参数
- open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。
- 模式(mode)和缓冲(buffering)参数都是可选的
-
打开文件的模式有
-
r,只读模式(默认)。
-
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
-
a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
-
注: “+” 表示可以同时读写某个文件
-
w,只写模式。【不可读;不存在则创建;存在则删除内容;】
-
w+,写读
-
a+,同a
-
-
-
with语句
- 作用:将打开文件写在with中当对文件操作完成后with语句会自动帮关闭文件,避免忘记写f.close()
with open("data1.txt",'r',encoding = 'utf-8') as f:
for line in f:
print(line)
2、三种读操作比较
-
readline()每次读取一行,当前位置移到下一行
-
readlines()读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素
-
read(size)从文件当前位置起读取size个字节,如果不加size会默认一次性读取整个文件(适用于读取小文件)
#1. read()一次读取所有内容
'''aaa111
bbb222'''
f = open(r"data.txt")
print(f.read())
f.close()
#2. readline(),每次只读取一行,光标下移
'''
0: aaa111
1: bbb222
'''
f = open(r"data.txt")
for i in range(2):
print(str(i) + ": " + f.readline(),)
#3. 一次读取所有,每行作为列表的一个值
'''['aaa111\n', 'bbb222\n']'''
f = open(r"data.txt")
print(f.readlines())
3、使用read()读文件
1. read(n)读取指定长度的文件
f = open(r"somefile.txt")
print(f.read(7)) # Welcome 先读出 7 个字符
print(f.read(4)) #‘ to ‘ 接着上次读出 4 个字符
f.close()
2. seek(offset[, whence]) 随机访问
作用:从文件指定位置读取或写入
f = open(r"somefile.txt", "w")
f.write("01234567890123456789")
f.seek(5)
f.write("Hello, World!")
f.close()
f = open(r"somefile.txt")
print(f.read()) # 01234Hello, World!89
3. tell 返回当前读取到文件的位置下标
f = open(r"somefile.txt")
f.read(1)
f.read(2)
print(f.tell()) # 3 3就是读取到文件的第三个字符
4、readline()读文件
作用:readline 的用法,速度是fileinput的3倍左右,每秒3-4万行,好处是 一行行读 ,不占内存,适合处理比较大的文件,比如超过内存大小的文件
f1 = open('test02.py','r')
f2 = open('test.txt','w')
while True:
line = f1.readline()
if not line:
break
f2.write(line)
f1.close()
f2.close()
5、readlines()读文件
作用:readlines会把文件都读入内存,速度大大增加,但是木有这么大内存,那就只能乖乖的用readline
f1=open("readline.txt","r")
for line in f1.readlines():
print(line)
6、将data1.txt中内容读取并写入到data2.txt中
f1 = open('data1.txt','r')
f2 = open('data2.txt','w')
for line in f1:
f2.write(line)
f1.close()
f2.close()
7、使用eval()方法将文件读取成字典
f = open('data1.txt')
f1 = (f.read())
data = eval(f1)
f.close()
print(data) # 运行结果: {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}
8、将文件内容读取成列表
lock = []
f = open("password.txt")
for name in f.readlines():
lock.append(name.strip('\n'))
print(lock)
运行结果: ['aaa 111', 'bbb 222', 'ccc 333']
来源:CSDN
作者:Hanmin_hm
链接:https://blog.csdn.net/Hanmin_hm/article/details/104778361