一、Python文件处理方式
# 打开指定文件# r表示read(读取);f表示“句柄”,通过其可对文件进行操作f=open(r"D:\CI_Env\Python_Test\file\001.txt","r")# 读取文件data=f.read()# 输出文件中的数据print(data)# 关闭文件f.close()
磁盘IO:对磁盘中持久化文件(不因关闭系统而消失)的读&写操作
读:将磁盘中的文件数据加载到程序中使用
写:将程序中生成的数据写入磁盘中保存
PS:文件读写操作完成之后,需要关闭文件IO资源,否则会占用系统内存,对性能不利
1.打开文件
使用Python内置的open()方法打开文件file object = open(file_name [, access_mode][, buffering])
参数说明:
file_name:所要访问路径的文件名access_mode:打开文件的模式(只读、写入、追加...),非必填,默认文件访问模式为“只读”(r)buffering:代表寄存、缓冲。1)取值=0,不会有寄存;2)取值=1,访问文件时会寄存行;3)取值>1,表明该取值就是及存取的缓冲大小;4)取值<0,寄存区的缓冲大小为系统默认值
以只读方式打开txt文本,第一种情况为txt文本与脚本在同一目录,第二种情况为txt文本与脚本不在同一目录(需要用转移符进行转义绝对路径)f = open('stu_info.txt','r')f = open('X:\\test\\stu_info.txt','r')
常用文件的打开模式
| 模式 | 描述 |
|---|---|
| r | 以只读模式打开文件 |
| rb | 以二进制格式打开一个文件,且用于只读 |
| w | 打开一个文件只用于写入 |
| a | 打开一个文件用于追加。新的内容会被写入到已有内容之后;若该文件不存在,则会创建新文件进行写入 |
2.文件读写
# 打开指定文件# r表示read(读取);f表示“句柄”,通过其可对文件进行操作f=open(r"D:\CI_Env\Python_Test\file\001.txt","r")# 读取整个文件data = f.read()# 按行读取文件(一次读取一行)data = f.readline()# 按行读取整个文件,将读取的内容存储在列表中,每一行作为一个元素data = f.readlines()# 输出data列表print(data)# 依次从列表中打印每个元素for i in range(len(data)):print(data[j])# 适合大文件读取(每读取一行就输出一行)for j in f:print(i)
方法说明:
read():每次读取整个文件,常用于将文件内容放到一个字符串变量中
readline():每次只读取一行
readlines():一次性读取文件的所有行,自动将文件内容解析为一个行的列表,该列表可以由for…in…结构进行处理
3.关闭文件
有打开文件,当文件处理完成之后,同时也需要关闭文件f.close()
二、Python读取txt文件
1.读取txt文件
案例1:读取stu_info.txt文本中的内容,将文本中的所有学生名字显示出来
# 创建文件对象f,以只读方式打开txt文本f = open('stu_info.txt','r')# 一次性读取该文件中的所有行,解析成一行的列表,将文件内容存放到变量lines中lines = f.readlines()# 打印出该变量中的列表print(lines)# 遍历变量lines中存放的所有内容# 根据','识别进行分隔输出第一个','前的信息for line in lines:print(line.split(',')[0])
输出结果:['Jack,25,Beijing\n', 'Harry,22,Shanghai\n', 'Bob,28,Guangdong']JackHarryBob
备注:
print(line.split(‘,’)[1]),则输出的是所有学生年龄
print(line.split(‘,’)[2]),则输出的是所有学生的地区
案例2:读取stu_info.txt文本中的内容,将文本中的所有学生的信息(名字、年龄、地区)都显示出来
f = open('Stu_info.txt','r')lines = f.readlines()print(lines)for line in lines:n = 0while n <= 2:print(line.split(',')[n])n = n + 1
输出结果:['Jack,25,Beijing\n', 'Harry,22,Shanghai\n', 'Bob,28,Guangdong']Jack25BeijingHarry22ShanghaiBob28Guangdong
2.写入txt文件
# 以写入方式打开一个文件;写入方式:覆盖写入or新建写入f=open(r"D:\CI_Env\Python_Test\file\002.txt","w")# 向打开的文件中写入指定内容data="Hello 2019!"f.write(data)# 关闭文件f.close()# 以追加写入方式打开文件f=open(r"D:\CI_Env\Python_Test\file\002.txt","a")data="Keep the Faith"f.write(data)f.close()

三、Python读写csv文件
1.csv文件读取
案例:读取Stu_info.csv文件里所有学生信息
import csv# 读取csv文件中每行的列表,将每行读取的值作为列表返回csv_file = csv.reader(open('Stu_info.csv','r'))print(csv_file) # 此时输出的是内存地址for stu in csv_file:print(stu)
输出结果:<_csv.reader object at 0x01464AB0>['Caddy', '26', 'Chengdu']['Rom', '20', 'Chongqing']
若只是输出csv文件中的第1列(A列),则用print(stu[0])
2.csv文件写入
import csv# 实现对Stu_info.csv文件追加写入两个学生信息stu1 = ['Harry',28,'Changsha']stu2 = ['Bob',25,'Shenzhen']# 以newline=''打开csv文件进行追加,newline可避免空行out = open('Stu_info.csv','a',newline='')#设定写入模式csv_write = csv.writer(out,dialect='excel')#写入具体内容csv_write.writerow(stu1)csv_write.writerow(stu2)
输出结果:Process finished with exit code 0
若打开csv文件时以open('Stu_info.csv','w',newline=''),则会把新写入的数据覆盖csv文件中原来存在的数据。
3.对二进制文件的读取&写入
# 实现:复制# 以读取二进制文件方式打开指定文件f1=open(r"D:\CI_Env\Python_Test\file\11.jpg","rb")# 读取文件数据内容data=f1.read()# 实现:粘贴# 以写入二进制方式打开指定文件f2=open(r"D:\CI_Env\Python_Test\file\22.jpg","wb")# 写入以上读取到的文件数据内容f2.write(data)# 关闭文件f1.close()f2.close()

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