Python文件处理I——快速入门文件处理

文件处理的基本操作包含四步:打开文件,读取文件,写入文件,关闭文件(close函数)。本文会按照这四个步骤分别介绍Python中是如何处理文件的。

一,打开文件

1,open方法()

函数及参数:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

参数说明
file文件路径
mode打开方式
buffering缓存机制:1,表示使用缓存机制,-1表示使用系统默认 ,0表示不适用缓存机制,只对Binary有效
encoding编码格式
newline换行符
2,打开方式参考
模式说明
r只读模式,打开后不能执行写操作
w只写模式,文件存在被清空,打开后不能执行读操作
x创建新文件,以只写方式打开,若文件存在报错
a追加模式
+读写方式打开
r+读写方式打开
w+读写方式打开,文件存在被清空
二进制方式rb, wb, xb, rb+, wb+ ,场景:图片,二进制文件等
3,读写方式示例:

1)基本读写

#定义读取函数
def read_file(fpath):
    fr = open(fpath)
    content = fr.read()
    if content:
        print(content)
    else:
        print("文件内容为空")
        f.close()
#定义写入函数
def write_file(fpath, content = ""):
    fw = open(fpath, "w")
    if content:
    text = fw.write(content)
    fw.close()
#文件路径
fpath = r"E:\vscode_dir\python_file\write_only.txt"
#写入内容
line = "Hello world!"
#打开文件并写入一行
write_file(fpath, line)
#写入第二行
write_file(fpath, line)
#读取文件内容
read_file(fpath)
#只打开文件,不写入数据
write_file(fpath)
#读取文件内容
read_file(fpath)

2)用读写方式打开

  • 用r+打开
fpath = r"E:\vscode_dir\python_file\write_read.txt"
#打开文件
f = open(fpath, "r+")
#读取文件内容
print(f.read())
line = "自律"
#在文件尾部追加
f.write(line)
#重置读取位置
f.seek(0, 0)
#读取写入内容
print(f.read())
f.close()
  • 用w+打开
fpath = r"E:\vscode_dir\python_file\write_read.txt"
#打开文件
f = open(fpath, "w+")
line = "人生苦短,我用Python"
#写入数据
text = f.write(line)
#重置读取位置
f.seek(0, 0)
#读取写入内容
print(f.read())
f.close()

3)重复读取

操作:

  1. 读取文件后,关闭文件后又重新打开
  2. 使用seek方法,重置读取的位置

示例:

fpath = r"E:\vscode_dir\python_file\test.txt"
#第一次读取
f = open(fpath, encoding="utf-8")
text = f.read()
print(text)
f.close()
#第二次读取
f = open(fpath, encoding="utf-8")
text = f.read()
print(text)
f.close()

使用seek重置文件读取的起始位置:

seekf(cookie, whence=0, /)

主要参数:

cookie:偏移值;

whence:偏移位置,0:文件起始位置,1:文件当前位置,2:文件尾部

注意: 1)当文件不是以二进制方式打开,当whence不为0时,cookie设置为0;偏移值与文件编码格式相关; 2)当文件以二进制方式打开,cookie可以设置其他正确的值;重复读取文件:

fpath = r"E:\vscode_dir\python_file\test.txt"
#打开文件
f = open(fpath, encoding="utf-8")
#设置读取次数
for i in range(3):
#第一次读取
text = f.read()
print(text)
#读取完成后,重置读取位置
f.seek(0, 0)
4,文件编码问题

常见编码格式:UTF-8,GBK,UTF-16

  1. 注意文件读写时的编码格式要与文件编码格式对应
  2. 一般看到打开文件,读取时遇到"UnicodeDecodeError"问题,需要检查设置的编码格式

二,文件读写

1,文件读取方式
函数说明
f.read(size=-1, /)读取文件内容,默认读取完
f.readline(size=-1, /)读取一行,读取到EOF或者新的一行结束
f.readlines(hint=-1, /)读取多行
for line in f: pass使用for循环逐行遍历文件
2,文件写入方式
函数说明
f.write(text, /)写入数据
f.writelines(lines, /)写入多行

三,完整的文件处理简单操作

代码示例如下:

#输入文件路径
in_fpath =  r"E:\vscode_dir\python_file\sales_report.txt" 
#输出文件路径
out_fpath =  r"E:\vscode_dir\python_file\pr001_sales_report.txt"

#文件处理操作
#打开文件
f = open(in_fpath)
#创建新文件,保存过滤数据
fw = open(out_fpath, "w")
for line in f:
    if line.startswith(product):
        print(line, end="")
        fw.write(line)
    f.close()
    fw.close()

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值