在Python中,可以使用内置的open()
函数来进行文件操作
基础的格式
open("文件路径" , mode="" , encoding="")
文件路径:
相对路径
当对于当前文件的所在位置 推荐使用不容易报错
绝对路径
D:/text/.....
mode:(还有很多,这里列举几个常用的,有兴趣的朋友可以自己去查阅一下)
r = read 读取
w = write 写
a = append 接着写
+b 读取非文本文件
encoding 默认是utf-8 但有些电脑默认是gbk,以免报错这里还是最好加上
文件的读取
read() 全部读取
注意这里的ceshi.txt,是我项目中的文件地址,在学习时要换成自己的文件地址下面的代码中也是也一样的
texts = open("ceshi.txt", mode="r", encoding="utf-8")
content = texts.read()
print(content)
readline() 读取一行
content = texts.readline()
content2 = texts.readline().strip() # 去掉字符串左右两端的空白,换行,制表符
print(content)
print(content2)
content3 = texts.readlines() # 一次性全部读出来放到一个列表中
要记住的一种读取方式比较常用(***)
# 最重要的读取文件的一种方式
texts = open("ceshi.txt", mode="r", encoding="utf-8")
for line in texts:
print(line.strip())
文件的写入
如果文件不存在 w模式下会自动创建一个文件
w模式下 每一次open都会清空掉文件中的内容
w模式
f = open("书店.txt", mode="w", encoding="utf-8")
# 将一个列表写入书店中
list = ["呐喊", "老人与海", "西游记", "三国演义"]
for i in list:
f.write(i)
f.write("\n") #加一个换行符
f.close()
a模式
fs = open("书店.txt", mode="a", encoding="utf-8")
fs.write("继续写入")
fs.close()
with
with: 上下文,读取后不用手动关闭
with open("ceshi.txt", mode="r", encoding="utf-8") as f:
for line in f:
print(line.strip())
读取非文本
# 读取非文本文件时要加上b
with open("car.jpg", mode="rb") as f:
for line in f:
print(line.strip())
打印结果
例子,将one_python下的car.jpg复制到two_python文件夹下
( , \ 表示在同一行 )
with open("car.jpg", mode="rb") as f, \
open("../two_python/cars.jpg", mode="wb") as f2:
for line in f:
f2.write(line)
修改文件
在使用os.remove、os.rename时要 引入 import os # 和系统相关的操作
# 需求将人名.txt中性张的改成姓王
with open("人名.txt", mode="r", encoding="utf-8") as f, \
open("人名_副本.txt", mode="w", encoding="utf-8") as f2:
for item in f:
item = item.strip() # 去除换行...
if item.startswith("张"):
item = item.replace("张", "王") # 修改
f2.write(item)
f2.write("\n")
# 删除源文件
os.remove("人名.txt")
# 修改文件名称
os.rename("人名_副本.txt", "人名.txt")