目录结构

一、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)
输出结果:
['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()