python文件操作
1.文件类型
文本类型:需要能够看懂的文字,指定正确编码
编码:
utf-8
gbk
latinl(英文)
big5(繁体)
二进制类型:能够直接运行的文件就是二进制文件
2.文件作用:
目的 永久保存数据不丢失
3.文件操作:
(1):打开文件
fp=open(文件路径,打开方式,encoding="编码方式")
打开方式:
文本操作: r(读) w(覆盖写, 自动创建) a(追加, 自动创建)
二进制操作: rb wb ab (读写追加二进制文件)
(2): 读写文件
读:
fp.read() : 读完
fp.read(number): 读取指定个数字符
fp.readline(): 一次读一行
fp.readlines(): 按行读取所有
写:
fp.write(数据)
fp.writelines([列表]): 写入多条数据(不换行)
(3): 关闭文件
fp.close()
4. 循环读取文件内容 (解决大文件读取问题)
data = fp.read(1024)
while data: # 其他类型的数据也可以当作布尔值
# 操作data
# 继续读
data = fp.read(1024)
文本文件复制
# 简单版文件复制
# 打开文件,打开新文件
old_fp = open("./data.txt", "r", encoding="utf-8")
new_fp = open("./data-副本.txt", "w", encoding="utf-8")
# 读取原文件,写到新文件中
data = old_fp.read() # 读完,原文件内容小
new_fp.write(data)
# 关闭原文件和新文件
old_fp.close()
new_fp.close()
# 大文件版:边读边写
# 打开文件,打开新文件
old_fp = open("./data.txt", "r", encoding="utf-8")
new_fp = open("./data-副本.txt", "w", encoding="utf-8")
# 读取原文件,写到新文件中
data = old_fp.read(6)
while data:
# 写入内容
new_fp.write(data)
# 继续读取文件
data = old_fp.read(6)
# 关闭原文件和新文件
old_fp.close()
new_fp.close()
# 任意文本文件复制:录入文件路径
file_path = input("请输入需要复制的文件的路径:")
tmp = file_path.split(".")
# print(tmp)
new_file_path = f"{tmp[0]}-副本.{tmp[1]}" # 新路径
# 打开文件,打开新文件
old_fp = open(file_path, "r", encoding="utf-8")
new_fp = open(new_file_path, "w", encoding="utf-8")
# 读取原文件,写到新文件中
data = old_fp.read(6)
while data:
# 写入内容
new_fp.write(data)
# 继续读取文件
data = old_fp.read(6)
# 关闭原文件和新文件
old_fp.close()
new_fp.close()
# 任意文件复制:录入文件路径
file_path = input("请输入需要复制的文件的路径:")
tmp = file_path.split(".")
# print(tmp)
new_file_path = f"{tmp[0]}-副本.{tmp[1]}" # 新路径
# 打开文件,打开新文件
old_fp = open(file_path, "rb") # 全部使用二进制复制文件,就不需要编码
new_fp = open(new_file_path, "wb")
# 读取原文件,写到新文件中
data = old_fp.read(6)
while data:
# 写入内容
new_fp.write(data)
# 继续读取文件
data = old_fp.read(6)
# 关闭原文件和新文件
old_fp.close()
new_fp.close()
文件常见操作
先导入包: import os
1.文件重命名
语法:
os.rename("文件名","新的文件名")
例子:
# 重命名文件
os.rename("./data.txt", "./data_bak.txt")
2.删除文件
语法:
os.remove ("文件名")
例子:
# 删除文件
os.remove("./data_bak.txt")
3.创建文件夹
语法:
os.mkdir ("文件夹的名字")
例子:
# 创建文件夹
os.mkdir("新建文件夹")
4.获取当前目录
语法:
os.getcwd()
例子:
# 获取当前目录
path = os.getcwd()
print(path)
5.改变目录
语法:
os.chdir ()
相当于在shell中切换环境,后面的代码也会有所影响
例子:
# 改变目录
os.chdir("E:\python code\python基础_day07\上课代码")
print(os.getcwd())
6.获取目录列表
语法:
列表变量 = os.listdir("目录路径")
例子:
# 获取目录列表
print(os.listdir("../"))
7.删除目录
语法:
os.rmdir("目录路径")
注意:只能够删除一个空目录
例子:
# 删除目录
os.rmdir("文件夹路径")
8.判断是否为目录(文件夹)或者是文件
语法:
os.path.isdir("目录路径") 判断该文件是否为一个目录(文件夹)
os.path.isfile("文件路径") 判断路径是否为一个文件
注意以上写法有path的哦
例子:
# 判断是否为目录(文件夹)或者文件
# 判断是否是一个目录
tmp = os.path.isdir("目录路径")
print(tmp)
tmp = os.path.isfile("文件路径")
print(tmp)
9.获取文件扩展名
语法:
os.path.splitext ("文件名")
注意以上写法有path的哦
例子:
# 获取文件扩展名
filename, extension = os.path.splitext("./01-文本文件操作.py")
print(filename)
print(extension)
批量添加文件前缀和删除前缀
"""
批量操作目录下文件:
1.批量添加前缀
2.批量删除前缀
"""
# 显示功能列表
print("""
1.批量添加前缀
2.批量删除前缀
""")
sn = input("请输入序号:")
# 录入前缀
perfix = input("请输入前缀:")
# 录入目录路径
path = input("请输入操作目录路径:")
# 操作
import os
# 列出指定目录下所有内容
file_list = os.listdir(path)
# 遍历文件列表,判断是否为文件
for f in file_list:
print(f)
# 判断
if not os.path.isfile(os.path.join(path, f)):
continue
# 如果是一个文件,添加或删除
if sn == "1":
print("添加前缀")
# 添加就是重命名
# os.rename(os.path.join(path, f), os.path.join(path, perfix + f))
os.rename(os.path.join(path, f), os.path.join(path, perfix + f))
elif sn == "2":
print("删除前缀")
# 判断
if f.startswith(perfix):
# 删除也是重命名
os.rename(os.path.join(path, f), os.path.join(path, f[len(perfix):]))
else:
print("序号错误~")
break
else:
print("执行成功")