文件的操作
大前提: 导入os
文件重命名
import os
os.rename("./test/test2.txt","./test/test2-bak.txt")
文件删除
os.remove("./test/test1 - 副本.txt")
新建文件夹
os.mkdir("test2")
获取当前目录
path=os.getcwd()
print(path)
改变目录
语法:
os.chdir ()
相当于在shell中切换环境,后面的代码也会有所影响
os.chdir("./test")
print(os.getcwd())
获取目录列表
语法:
列表变量 = os.listdir(“目录路径”)
test_list=os.listdir("D:\\pycode\\test") #输出列表
print(test_list)
删除目录
语法:
os.rmdir(“目录路径”)
注意:只能够删除一个空目录
os.rmdir("./test2")
判断是否为目录(文件夹)或者是文件
语法:
os.path.isdir(“目录路径”) 判断该文件是否为一个目录(文件夹)
os.path.isfile(“文件路径”) 判断路径是否为一个文件
注意以上写法有path的哦
print(os.path.isdir("D:\\pycode\\test"))
print(os.path.isfile("D:\\pycode\\test\\test1.txt"))
路径连接
语法:os.path.join(父目录路径,文件名)
new_path=os.path.join("D:/pycode/test_dir","test1.txt")
任意位置的大文本文件的复制
步骤
加载os
输入旧文件名
输入路径名
打开旧文件和新文件
读取旧文件的内容
写入到新文件
关闭两个文件
# 加载os
import os
file_name = input("请输入要复制的文件名:")
path = input("请输入要复制的文件路径:")
# 打开旧文件和新文件
# 绝对路径名,os.path.join(父目录路径,文件名)
'''
新文件的名字后,后缀前加"-副本"的方法:先把文件名file_name以"."从右到左分隔一次,
再以" - 副本."连接成新文件名,再和父目录路径连接
'''
old_file = open(f"{os.path.join(path,file_name)}", "r", encoding="utf-8")
new_file = open(f"{os.path.join(path,' - 副本.'.join(file_name.rsplit('.',1)))}", "w", encoding="utf-8")
# 读取旧文件的内容
# 按字符数循环读取旧文件内容,并添加到新文件,因为要全部添加完毕才关闭文件,且下次要覆盖,所以用w覆盖
tmp = old_file.read(10)
while tmp: # 当读取到字符,就为真
new_file.write(tmp) # 添加到新文件
tmp = old_file.read(10) # 继续读取下一次内容,重新赋值给tmp
# 关闭两个文件
old_file.close()
new_file.close()
任意位置的任意文件的复制
和任意位置大文件的复制类似,不同之处在于使用二进制读写文件内容,因为是二进制,所以不需要设置编译码
# 加载os
import os
file_name = input("请输入要复制的文件名:")
path = input("请输入要复制的文件路径:")
# 打开旧文件和新文件
# 绝对路径名,os.path.join(父目录路径,文件名)
'''
新文件的名字后,后缀前加"-副本"的方法:先把文件名file_name以"."从右到左分隔一次,再以" - 副本."连接成新文件名
再和父目录路径连接
'''
old_file = open(f"{os.path.join(path,file_name)}", "rb")
new_file = open(f"{os.path.join(path,' - 副本.'.join(file_name.rsplit('.',1)))}", "wb")
# 读取旧文件的内容
# 按字符数循环读取旧文件内容,并添加到新文件,因为要全部添加完毕才关闭文件,且下次要覆盖,所以用w覆盖
tmp = old_file.read(10)
while tmp: # 当读取到字符,就为真
new_file.write(tmp) # 添加到新文件
tmp = old_file.read(10) # 继续读取下一次内容,重新赋值给tmp
# 关闭两个文件
old_file.close()
new_file.close()