python

[Pt_06] Python对文件的读写处理

2018-06-26  本文已影响0人  Fighting_001

目录结构

一、Python文件处理方式
    1.打开文件
    2.文件读写
    3.关闭文件
二、Python读取&写入txt文件
    1.读取txt文件
    2.写入txt文件
三、Python读取&写入csv文件
    1.csv文件读取
    2.csv文件写入

一、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']
Jack
Harry
Bob

备注:
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 = 0
    while n <= 2:
        print(line.split(',')[n])
        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文件

# 以写入方式打开一个文件;写入方式:覆盖写入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()
上一篇下一篇

猜你喜欢

热点阅读