python基础4--文件操作
文件操作
对文件操作流程
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
1.open()打开文件
1 #获取文件句柄 2 f = open("yesterday","r",encoding="utf-8") 3 #读取数据 4 data = f.read() 5 #打印读取的文件 6 print(data) 7 #关闭文件 8 f.close()
打开文件的模式有:
- r,只读模式(默认)。
- w,只写模式。【不可读;不存在则创建;存在则删除内容;】
- a,追加模式。【可读; 不存在则创建;存在则只追加内容;】
"+" 表示可以同时读写某个文件
- r+,可读写文件。【可读;可写;可追加】
- w+,写读
- a+,同a
"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
- rU
- r+U
"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb
- wb
- ab
2. with 语句打开文件
使用with语句打开文件,不需要在最后使用f.close()来关闭文件,with执行完毕之后会自动关闭。
1 with open("./name.txt",'r') as f: 2 names = f.read() 3 print(names)
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
1 with open('log1') as obj1, open('log2') as obj2: 2 pass
3.read()
文件内容
Yesterday when I was young The taste of life was sweet As rain upon my tongue
1 with open("flieread.txt","r",encoding="utf-8") as f: 2 data1 = f.read() 3 print(data1) 4 data2 = f.read() 5 print("------data2-----",data2)
data2的部分为空,因为在文件中 ,维护一个类似文件指针的一个东西,这个文件指针类似于我们平时操作文件时的光标的东西,所以当第1次读文件时,文件指针已经指向最后一个位置,所以第2次再去读取的时候,是从最后一个位置开始读取的,所以读取的为空。
4.python读取文件方式
1 with open("yesterday.txt","r",encoding="utf-8") as f: 2 while True: 3 line = f.readline().strip() 4 print(line) 5 print(f.tell()) 6 if not line: 7 f.seek(0) 8 print(f.read(1)) 9 break
f.tell() 显示读取文件到什么位置,也是下一次开始读文件的位置,每个字符占一位(空格、标点符号也算)
f.seek() 设置读取文件光标的位置,f.seek(5)就是从第5个字符开始读取
python读取文件从 0 的位置开始,Somehow中S的位置为 1
第二行是从第72个字符开始读取的,即 不知为何中 不的位置为 72
f.seek(0)是文件读取完后,光标重新回到文首
f.read(1) 读取第一个字符即 S
5.readlines()
readlines()和read()一样也是一次读取整个文件存放在内存中,所以只适合读取小文件,readlines()自动将文件内容分析成一个行的列表。该表可由python的for ... in ...处理。
1 with open("flieread.txt","r",encoding="utf-8") as f: 2 line = f.readlines() 3 print(line) 4 for i in line: 5 print(i.strip()) 6 7 #输出 8 ['Yesterday when I was young\n', 'The taste of life was sweet\n', 'As rain upon my tongue'] 9 Yesterday when I was young 10 The taste of life was sweet 11 As rain upon my tongue
6.readline()
每次只读取一行,这种占用内容比较小
1 with open("flieread.txt","r",encoding="utf-8") as f: 2 line = f.readline() 3 print(line) 4 5 #输出 6 Yesterday when I was young
7.逐行读取文件
1 with open("fileread.txt","r",encoding="utf-8") as f:
2 while True:
3 line = f.readline()
4 if not line:
5 break
6 else:
7 print(line)