一、Python文件处理方式

  1. # 打开指定文件
  2. # r表示read(读取);f表示“句柄”,通过其可对文件进行操作
  3. f=open(r"D:\CI_Env\Python_Test\file\001.txt","r")
  4. # 读取文件
  5. data=f.read()
  6. # 输出文件中的数据
  7. print(data)
  8. # 关闭文件
  9. f.close()

磁盘IO:对磁盘中持久化文件(不因关闭系统而消失)的读&写操作
读:将磁盘中的文件数据加载到程序中使用
写:将程序中生成的数据写入磁盘中保存
PS:文件读写操作完成之后,需要关闭文件IO资源,否则会占用系统内存,对性能不利

1.打开文件

使用Python内置的open()方法打开文件
file object = open(file_name [, access_mode][, buffering])
参数说明:

  1. file_name:所要访问路径的文件名
  2. access_mode:打开文件的模式(只读、写入、追加...),非必填,默认文件访问模式为“只读”(r
  3. buffering:代表寄存、缓冲。
  4. 1)取值=0,不会有寄存;
  5. 2)取值=1,访问文件时会寄存行;
  6. 3)取值>1,表明该取值就是及存取的缓冲大小;
  7. 4)取值<0,寄存区的缓冲大小为系统默认值

以只读方式打开txt文本,第一种情况为txt文本与脚本在同一目录,第二种情况为txt文本与脚本不在同一目录(需要用转移符进行转义绝对路径)
f = open('stu_info.txt','r')
f = open('X:\\test\\stu_info.txt','r')
常用文件的打开模式

模式 描述
r 以只读模式打开文件
rb 以二进制格式打开一个文件,且用于只读
w 打开一个文件只用于写入
a 打开一个文件用于追加。新的内容会被写入到已有内容之后;若该文件不存在,则会创建新文件进行写入

2.文件读写

  1. # 打开指定文件
  2. # r表示read(读取);f表示“句柄”,通过其可对文件进行操作
  3. f=open(r"D:\CI_Env\Python_Test\file\001.txt","r")
  4. # 读取整个文件
  5. data = f.read()
  6. # 按行读取文件(一次读取一行)
  7. data = f.readline()
  8. # 按行读取整个文件,将读取的内容存储在列表中,每一行作为一个元素
  9. data = f.readlines()
  10. # 输出data列表
  11. print(data)
  12. # 依次从列表中打印每个元素
  13. for i in range(len(data)):
  14. print(data[j])
  15. # 适合大文件读取(每读取一行就输出一行)
  16. for j in f:
  17. print(i)

方法说明:
read():每次读取整个文件,常用于将文件内容放到一个字符串变量中
readline():每次只读取一行
readlines():一次性读取文件的所有行,自动将文件内容解析为一个行的列表,该列表可以由for…in…结构进行处理

3.关闭文件

有打开文件,当文件处理完成之后,同时也需要关闭文件
f.close()

二、Python读取txt文件

1.读取txt文件

案例1:读取stu_info.txt文本中的内容,将文本中的所有学生名字显示出来
06 . 对文件的读写处理 - 图1

  1. # 创建文件对象f,以只读方式打开txt文本
  2. f = open('stu_info.txt','r')
  3. # 一次性读取该文件中的所有行,解析成一行的列表,将文件内容存放到变量lines中
  4. lines = f.readlines()
  5. # 打印出该变量中的列表
  6. print(lines)
  7. # 遍历变量lines中存放的所有内容
  8. # 根据','识别进行分隔输出第一个','前的信息
  9. for line in lines:
  10. print(line.split(',')[0])

输出结果:
['Jack,25,Beijing\n', 'Harry,22,Shanghai\n', 'Bob,28,Guangdong']
Jack
Harry
Bob
备注:
print(line.split(‘,’)[1]),则输出的是所有学生年龄
print(line.split(‘,’)[2]),则输出的是所有学生的地区
案例2:读取stu_info.txt文本中的内容,将文本中的所有学生的信息(名字、年龄、地区)都显示出来

  1. f = open('Stu_info.txt','r')
  2. lines = f.readlines()
  3. print(lines)
  4. for line in lines:
  5. n = 0
  6. while n <= 2:
  7. print(line.split(',')[n])
  8. n = n + 1

输出结果:
['Jack,25,Beijing\n', 'Harry,22,Shanghai\n', 'Bob,28,Guangdong']
Jack
25
Beijing
Harry
22
Shanghai
Bob
28
Guangdong

2.写入txt文件

  1. # 以写入方式打开一个文件;写入方式:覆盖写入or新建写入
  2. f=open(r"D:\CI_Env\Python_Test\file\002.txt","w")
  3. # 向打开的文件中写入指定内容
  4. data="Hello 2019!"
  5. f.write(data)
  6. # 关闭文件
  7. f.close()
  8. # 以追加写入方式打开文件
  9. f=open(r"D:\CI_Env\Python_Test\file\002.txt","a")
  10. data="Keep the Faith"
  11. f.write(data)
  12. f.close()

06 . 对文件的读写处理 - 图2

三、Python读写csv文件

1.csv文件读取

案例:读取Stu_info.csv文件里所有学生信息
06 . 对文件的读写处理 - 图3

  1. import csv
  2. # 读取csv文件中每行的列表,将每行读取的值作为列表返回
  3. csv_file = csv.reader(open('Stu_info.csv','r'))
  4. print(csv_file) # 此时输出的是内存地址
  5. for stu in csv_file:
  6. print(stu)

输出结果:
<_csv.reader object at 0x01464AB0>
['Caddy', '26', 'Chengdu']
['Rom', '20', 'Chongqing']
若只是输出csv文件中的第1列(A列),则用print(stu[0])

2.csv文件写入

  1. import csv
  2. # 实现对Stu_info.csv文件追加写入两个学生信息
  3. stu1 = ['Harry',28,'Changsha']
  4. stu2 = ['Bob',25,'Shenzhen']
  5. # 以newline=''打开csv文件进行追加,newline可避免空行
  6. out = open('Stu_info.csv','a',newline='')
  7. #设定写入模式
  8. csv_write = csv.writer(out,dialect='excel')
  9. #写入具体内容
  10. csv_write.writerow(stu1)
  11. csv_write.writerow(stu2)

输出结果:
Process finished with exit code 0
06 . 对文件的读写处理 - 图4

若打开csv文件时以open('Stu_info.csv','w',newline=''),则会把新写入的数据覆盖csv文件中原来存在的数据。

3.对二进制文件的读取&写入

  1. # 实现:复制
  2. # 以读取二进制文件方式打开指定文件
  3. f1=open(r"D:\CI_Env\Python_Test\file\11.jpg","rb")
  4. # 读取文件数据内容
  5. data=f1.read()
  6. # 实现:粘贴
  7. # 以写入二进制方式打开指定文件
  8. f2=open(r"D:\CI_Env\Python_Test\file\22.jpg","wb")
  9. # 写入以上读取到的文件数据内容
  10. f2.write(data)
  11. # 关闭文件
  12. f1.close()
  13. f2.close()

06 . 对文件的读写处理 - 图5


0人點贊

Selenium+Python

作者:Fighting_001
链接:https://www.jianshu.com/p/f59f101654cf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。