一.文件的打开
使用open:形式:open("文件路径",mode="",encoding="")
1.文件路径:
(1).绝对路径:
文件从根目录开始,在计算机文件系统中的完整位置。
①表示形式:
在 Windows 系统中,绝对路径通常以盘符(如C:
、D:
)开头,后面跟着反斜杠\
分隔的各级目录和文件名。例如:
"D:\office2\xhkt\考生文件夹\工作.txt"
②优点:
明确性:绝对路径清晰地指定了文件或目录的位置,不受当前工作目录的影响。无论在哪个目录下运行 Python 程序,只要绝对路径正确,都能准确找到目标。
③缺点:
可移植性差:在不同的操作系统之间移植代码,需要注意绝对路径的格式差异。
(2).相对路径:
相对于当前你的程序所在文件夹的位置
①表示形式:
例如:
"文件夹1/花花.txt"
"./花花.txt" ./表示当前文件夹
"../文件夹2/花花.txt" ../表示返回上一层文件夹
②优点:
灵活度高:当整个项目的目录结构发生变化时,只要文件之间的相对位置关系保持不变,代码依然能够正确地找到相关文件。
③缺点:
路径依赖:如果脚本的执行位置发生变化(比如从一个目录下直接执行变为从另一个目录下导入执行),相对位置可能会导致找不到文件的情况。
2.mode="":
指定文件打开方式
r:读取
w:写入
a:追加补充
b:若是非文本,则要写rb,wb
3.encoding="":
指定文件编码方式
常见:UTF-8
GBK
4.代码:
f=open("练习.txt",mode="r",encoding="utf-8")#把读到的存给f
二.文件的读取和打印
第一种:
f=open("练习.txt",mode="r",encoding="utf-8")#把读到的存给f
这种形式下每次读取写入都要进行关闭操作
close()
第二种:
with open("练习.txt",mode="r",encoding="utf-8") as f :
with形式下不需要进行关闭操作
将文件"练习.txt"存给f后,如何进行打印
1.文件全部读取打印:
#用content读取出来(全部读取)
content=f.read()
print(content)
2.文件一行一行读取打印(最常用):
#一行一行读取(最常用)
line=f.readline().strip()
print(line)
line=f.readline().strip()
print(line)
"""
因为一个print自带一个换行,而文本中本身就有换行,一行一行打印出来会出现有空白行,用strip删掉
strip作用(去除字符串两端的空白,空格,换行,制表符)
"""
3.文件多行全部读取打印:
#全部行读出来,打印成为一个列表
line=f.readlines()
print(line)
4.for循环全部读取打印(最重要):
for line in f:#最重要
print(line.strip())
三.非文本文件的读取和打印
照片打印:
#读取照片
#想要读写非文本文件的时候加上b
with open("樱花.jpg",mode="rb") as f:
for line in f:
print(line)
四.文件的写入
1.写入文件第一种方式:
mode=w
w下如若文件不存在就会新建文件
w下,每一次open都会清空文件里的内容
f=open("练习1.txt",mode="w",encoding="utf-8")#打开
f.write("hh")#写入
f.close()#第一种形式下写入打开文件要进行关闭链接操作,不然对程序不好,文件会千疮百孔
2.写入文件第二种方式:
mode=a
a模式下会接着文件之前的内容往下写,不会清空
f=open("练习1.txt",mode="a",encoding="utf-8")
f.write("hh")
f.close()#第一种形式下写入打开文件要进行关闭链接操作,不然对程序不好,文件会千疮百孔
五.文件的复制
从源文件中读取内容,写入到新路径中
#若一行代码太长,可分两行,但要在第一行加上“\”,表示两行时一起的
with (open("樱花.jpg",mode="rb") as f1,\
open( "樱花2.jpg",mode="wb") as f2):
for item in f1:
f2.write(item)
六.文件的修改(综合运用)
修改文件做法:
1.从源文件中读出
2.在内存中修改
3.把修改后的内容写入新文件
4.删除源文件,修改新文件的名字为源文件
#文件修改(把姓周的都改为姓杨的)
import os
#和操作系统相关的模块引入,引入os
import time
#引入和时间相关的模块(查看运行)(使运行速度变慢)
with open("人名单.txt",mode="r",encoding="utf-8") as f1,\
open("人名单_副本.txt",mode="w",encoding="utf-8") as f2:
for item1 in f1:
item1=item1.strip()#去除换行符号
if item1.startswith("周"):#判断首字母
item1=item1.replace("周","杨")#替换首字母
f2.write(item1)#写入新文件
f2.write("\n")#加换行符号(因为原本就有换行符)
# 删除文件函数
#time.sleep(3) 让程序睡眠三秒
os.remove("人名单.txt")
#文件重命名函数
#time.sleep(3) 让程序睡眠三秒
os.rename("人名单_副本.txt","人名单.txt")