一、文件操作步骤:
1. 打开文件 (open)(事先新建好txt)
file = open(r"D:\QC\python\test.txt", "r")
r:防止转义 "D:\QC\python\test.txt":文件路径 "r":只读形式
2. 读、写文件(read、write)
txt = file.read()
print(txt)
3. 关闭文件 (close)
file.close()
新建test.txt:
新建空文本test1.txt
二、追加写文件
file = open(r"D:\QC\python\test1.txt", "a") # a追加写
file.write("hi") # 新追加txt的内容
file.close()
修改文件内容
file = open(r"D:\QC\python\test.txt", "r") # 读的方式
txt = file.read() #先读出来
a = txt.replace("hello", "bye")
file.close() # 一定要关闭
file = open(r"D:\QC\python\test.txt", "w") # 写
file.write(a)
file.close()
结果:
三、复制文件
把文件test.txt的内容复制到test2.txt
思路:1)读取test中所有内容 2)打开test2文件用w写入,把内容写入
file = open(r"D:\QC\python\test.txt", "r")
txt = file.read()
file.close()
file = open(r"D:\QC\python\test2.txt", "w")
file.write(txt)
file.close
结果:
四、合并文件
把两个文件的内容合并起来写入另一个文件中
文件test.txt内容放置在变量a中,文件test1.txt内容放置在变量b中,合并a+b到test_new.txt中
# 读取test内容
file = open(r"D:\QC\python\test.txt", "r")
a = file.read()
file.close()
# 读取test1内容
file = open(r"D:\QC\python\test1.txt", "r")
b = file.read()
file.close()
# 合并写入test_new
file = open(r"D:\QC\python\test_new.txt", "w")
file.write(a+b)
file.close()
注意:每次读取或写入需要关闭
结果:
五、读取文件行数
1. 单行读取 (readline)test.txt
file = open(r"D:\QC\python\test.txt", "r")
a = file.readline() # 未关闭就继续往下读
print(a, end="") # 去除空余的一行
a = file.readline()
print(a,end="")
file.close()
结果:
单行+循环,读取整个文件
file = open(r"D:\QC\python\test.txt", "r")
while True:
txt = file.readline()
if txt == "": #当没有字符时跳出
break
print(txt, end="")
file.close()
结果:
2. 读取偶数行
思路:打开文件读取所有行但仅显示偶数行
file = open(r"D:\QC\python\test.txt", "r")
index = 1 # 定义一个计数器(行数)
while True:
txt = file.readline()
if txt == "": # 循环至最后
break
if index % 2 == 0: # 是偶数行就显示
print(txt, end = "") # 去掉后面的回车
index += 1 # 每次读完+1往下读
file.close()
3. 多行读取(readlines)
file = open(r"D:\QC\python\test.txt", "r")
list1 = file.readlines()
print(list1)
file.close()
结果:显示为列表存在/n;文件有几行,列表就有几个成员
可改写为遍历列表中的每个成员,添加for循环
六、withopen
对等代码
with open(r"D:\QC\python\test.txt", "r") as file:
txt = file.read()
print(txt)
7.12更新
(一)with open 和 file open()对比
1) 使用open打开文件,必须要使用close关闭文件,若运行出错则不会关闭文件。
因此使用try....finally
try:
f = open('test1.txt', 'r')
print(f.read())
finally:
if f:
f.close()
无论运行是否出错,都会执行finally下的代码
2) with open可以不用close()方法关闭文件,即使发生错误,退出运行时环境时也能安全退出文件并给出报错信息。
with open() 读 (自动调用f.close())
with open('test1.text', 'r') as file:
print(f.read())
with open() 写
写入文件内容时,系统不会立刻就把所有数据写入到磁盘,它是先放到内存中缓存,等到空闲的时候再慢慢写入到磁盘。当调用close()方法时,系统才能保证把剩余没有写入的数据全部写入到磁盘。假如调用close()方法,那可能导致数据遗失。
with open('test1.text', 'w') as f:
print(f.write('demo'))
3)命令seek()、tell()
file = open('1.txt', 'r')
file.seek(2) # 指针跳到索引2的位置
print(file.read())
print(file.tell()) # 返回读取文件后指针位置
file.close()
结果:
1.txt内容为 Hellogoodbyegenius
4)复制图片
os模块下一篇
(二)路径显示
- 绝对路径:从根文件夹开始,如Window 系统中以盘符(C:、D:)作为根文件夹
- 相对路径:指的是文件相对于当前工作目录所在的位置。
1)项目所在文件夹中txt
绝对路径:("\""/"都可以)
file = open(r"D:\QC\测试\学习\python\test.txt", "r")
相对路径:( “.\” 表示当前所在目录)
file = open(r".\test.txt", "r")
2)同级文件夹中txt
结果:
2) 上级文件夹中txt
绝对路径:
file = open(r"D:/QC/python/test.txt", "r")
相对路径:(..\表示上级)