Board logo

标题: 文件操作(复制、重命名、删除等) [打印本页]

作者: admin    时间: 2019-9-26 10:05     标题: 文件操作(复制、重命名、删除等)

例子一: 复制文件: #coding=utf-8 import shutil Path_1 = "./test1.txt" #源文件;相对路径,以脚本所在目录为家目录 Path_2 = "../test2.txt" #新文件;相对路径,以脚本所在目录的上一级目录为家目录 try: shutil.copyfile(Path_1,Path_2) #如果目标文件(新文件)已经存在,会被直接覆盖 print('文件复制成功。') except Exception as e: print(f'文件复制失败,原因: {e}') 脚本运行的结果:(文件复制成功时,会从源文件C:\Users\jacky\Desktop\test1.txt 复制出 新文件C:\Users\jacky\test2.txt) C:\Users\jacky\Desktop>python xx.py 文件复制成功。 C:\Users\jacky\Desktop> 脚本运行的结果:(源文件不存在时) C:\Users\jacky\Desktop>python xx.py 文件复制失败,原因: [Errno 2] No such file or directory: './test1.txt' C:\Users\jacky\Desktop> ###### 例子二: 复制文件: #coding=utf-8 import shutil Path_1 = "./test1.txt" #源文件 Path_2 = "d:/dir1/test1.txt" #新文件 try: src = open(Path_1, "r") dst = open(Path_2, "w") dst.write(src.read()) #如果目标文件(新文件)已经存在,会被直接覆盖 src.close() dst.close() print("文件复制成功。") except Exception as e: print(f"文件复制失败,原因: {e}") 脚本运行的结果:(文件复制成功时,会从源文件C:\Users\jacky\Desktop\test1.txt 复制出 新文件d:\dir1\test1.txt) C:\Users\jacky\Desktop>python xx.py 文件复制成功。 C:\Users\jacky\Desktop> 脚本运行的结果:(目录d:\dir1不存在时) C:\Users\jacky\Desktop>python xx.py 文件复制失败,原因: [Errno 2] No such file or directory: 'd:/dir1/test1.txt' C:\Users\jacky\Desktop> ###### 例子三: 复制文件: #coding=utf-8 import shutil Path_1 = "d:/dir1/test1.txt" #源文件 Path_2 = "d:/share/" + Path_1.split('/')[2] #新文件;必须要有一个完整的文件名 try: src = open(Path_1, "r") dst = open(Path_2, "w") dst.write(src.read()) #如果目标文件(新文件)已经存在,会被直接覆盖 src.close() dst.close() print("文件复制成功。") except Exception as e: print(f"文件复制失败,原因: {e}") 脚本运行的结果:(文件复制成功时,会从源文件d:\dir1\test1.txt 复制出 新文件d:\share\test1.txt) C:\Users\jacky\Desktop>python xx.py 文件复制成功。 C:\Users\jacky\Desktop> ###### 例子四: 重命名文件: #coding=utf-8 import os Path_1 = "D:/dir1/佛山_Database1.mdb" #源文件 Path_2 = "D:/dir1/广州_Database1.mdb" #目标文件(新文件) try: os.rename(Path_1,Path_2) #把源文件D:\dir1\佛山_Database1.mdb 重命名为 新文件D:\dir1\广州_Database1.mdb except Exception as e: print(f"文件重命名失败,原因: {e}") else: print("文件重命名成功。") 脚本运行的结果:(文件重命名成功时) C:\Users\jacky\Desktop>python xx.py 文件重命名成功。 C:\Users\jacky\Desktop> 脚本运行的结果:(源文件不存在时) C:\Users\jacky\Desktop>python xx.py 文件重命名失败,原因: [WinError 2] 系统找不到指定的文件。: 'D:/dir1/佛山_Database1.mdb' -> 'D:/dir1/广州_Database1.mdb' C:\Users\jacky\Desktop> 脚本运行的结果:(目标文件已经存在时) C:\Users\jacky\Desktop>python xx.py 文件重命名失败,原因: [WinError 183] 当文件已存在时,无法创建该文件。: 'D:/dir1/佛山_Database1.mdb' -> 'D:/dir1/广州_Database1.mdb' C:\Users\jacky\Desktop> ###### 例子五: 删除文件: #coding=utf-8 import os Path_1 = "D:\\dir1\\广州_Database1.mdb" try: os.remove(Path_1) print(f'文件{Path_1}删除成功。') except Exception as e: print(f"文件{Path_1}删除失败,原因: {e}") 脚本运行的结果:(文件删除成功时) C:\Users\jacky\Desktop>python xx.py 文件D:\dir1\广州_Database1.mdb删除成功。 C:\Users\jacky\Desktop> 脚本运行的结果:(文件不存在时) C:\Users\jacky\Desktop>python xx.py 文件D:\dir1\广州_Database1.mdb删除失败,原因: [WinError 2] 系统找不到指定的文件。: 'D:\\dir1\\广州_Database1.mdb' C:\Users\jacky\Desktop> ###### 例子六: 复制文件后,删除源文件: #coding=utf-8 import shutil,os Path_1 = "d:\\dir1\\Flask-2.0.3-py3-none-any.whl" #源文件 Path_2 = "d:\\share\\" + Path_1.split('\\')[2] #新文件;必须要有一个完整的文件名 shutil.copyfile(Path_1,Path_2) #如果目标文件(新文件)已经存在,会被直接覆盖 print(f'源文件{Path_1}已经复制出新文件{Path_2}。') os.remove(Path_1) print(f'源文件{Path_1}已经被删除。') 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 源文件d:\dir1\Flask-2.0.3-py3-none-any.whl已经复制出新文件d:\share\Flask-2.0.3-py3-none-any.whl。 源文件d:\dir1\Flask-2.0.3-py3-none-any.whl已经被删除。 C:\Users\jacky\Desktop> ###### 例子七: 获取文件的大小和创建、修改、访问时间: #coding=utf-8 import time import os file_1 = "d:/music/戴羽彤 - 冬天的秘密.mp3" #把时间戳转化为自定义时间格式 def TimeStampToTime(timestamp): timeStruct = time.localtime(timestamp) return time.strftime('%Y-%m-%d %H:%M:%S',timeStruct) #获取文件的大小,结果保留两位小数,单位为 MB def get_FileSize(filePath): fsize = os.path.getsize(filePath) fsize = fsize/float(1024*1024) return round(fsize,2) #获取文件的创建时间 def get_FileCreateTime(filePath): t = os.path.getctime(filePath) return TimeStampToTime(t) #获取文件的修改时间 def get_FileModifyTime(filePath): t = os.path.getmtime(filePath) return TimeStampToTime(t) #获取文件的访问时间 def get_FileAccessTime(filePath): t = os.path.getatime(filePath) return TimeStampToTime(t) if __name__ == '__main__': Result_1 = get_FileSize(file_1) print(f"{file_1} 的文件大小为{Result_1}MB") Result_2 = get_FileCreateTime(file_1) print(f"{file_1} 的创建时间为 {Result_2}") Result_3 = get_FileModifyTime(file_1) print(f"{file_1} 的修改时间为 {Result_3}") Result_4 = get_FileAccessTime(file_1) print(f"{file_1} 的访问时间为 {Result_4}") 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py d:/music/戴羽彤 - 冬天的秘密.mp3 的文件大小为10.83MB d:/music/戴羽彤 - 冬天的秘密.mp3 的创建时间为 2020-02-04 22:03:55 d:/music/戴羽彤 - 冬天的秘密.mp3 的修改时间为 2020-02-04 22:03:07 d:/music/戴羽彤 - 冬天的秘密.mp3 的访问时间为 2020-05-12 19:13:19 C:\Users\jacky\Desktop> ###### 例子八: 以列表的形式显示指定目录里的所有文件: #coding=utf-8 import os dir_1 = "d:/share/" f = list(os.listdir(dir_1)) print(f) print(type(f)) 脚本运行的结果: C:\Users\jacky\Desktop>python xx.py ['1.txt', '2.txt', 'Flask-2.0.3-py3-none-any.whl', '图片1.png', '图片2.png', '图片3.png'] C:\Users\jacky\Desktop> ###### 例子九: 删除7天之前(包括第7天)修改过的所有格式的文件:
  1. #coding=utf-8
  2. import time,datetime,os
  3. dir_1 = "D:/music/"
  4. class class_clean:
  5. def __init__(self,file_url):
  6. self.file_url = file_url
  7. def delfile(self):
  8. f = list(os.listdir(self.file_url))
  9. print(f"目标目录{self.file_url}\n 开始清理过期文件...")
  10. for i in range(len(f)):
  11. filedate = os.path.getmtime(self.file_url + f[i])
  12. time1 = datetime.datetime.fromtimestamp(filedate).strftime('%Y-%m-%d')
  13. date1 = time.time()
  14. num1 = (date1 - filedate)/60/60/24
  15. if num1 >= 7:
  16. try:
  17. os.remove(self.file_url + f[i])
  18. print(f"已删除文件:{time1} & {f[i]}")
  19. except Exception as e:
  20. print(e)
  21. else:
  22. print("......")
  23. if __name__ == '__main__':
  24. use_class = class_clean(dir_1)
  25. use_class.delfile()
  26. print(f'{use_class.file_url}的过期文件已清理完毕。')
复制代码
脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 目标目录D:/music/ 开始清理过期文件... 已删除文件:2020-02-14 & Python3调用另外一个脚本的函数和类.txt 已删除文件:2020-02-04 & 刘紫玲 - 你怎么说.mp3 已删除文件:2020-02-04 & 张卫健 - 信徒.mp3 已删除文件:2020-02-04 & 张卫健 - 至情至圣.mp3 已删除文件:2020-02-04 & 戴羽彤 - 冬天的秘密.mp3 已删除文件:2020-02-04 & 赵薇 - 偶然.mp3 已删除文件:2020-02-04 & 赵薇 - 往事难忘.mp3 已删除文件:2020-02-04 & 赵薇 - 情深深雨濛濛.mp3 已删除文件:2020-02-04 & 赵薇 - 自从离别后.mp3 ...... D:/music/的过期文件已清理完毕。 C:\Users\jacky\Desktop> ###### 例子十: 只显示指定目录里的txt文件:
  1. #coding=utf-8
  2. import os
  3. dir_1 = "d:\\share\\"
  4. K_1 = '.txt' #文件后缀
  5. f = list(os.listdir(dir_1))
  6. print(f)
  7. print(type(f))
  8. print("-" * 10)
  9. for i in range(len(f)):
  10. if f[i].endswith(K_1):
  11. print(f[i])
复制代码
脚本运行的结果: C:\Users\jacky\Desktop>python xx.py ['1.txt', '2.txt', 'Flask-2.0.3-py3-none-any.whl', '图片1.png', '图片2.png', '图片3.png'] ---------- 1.txt 2.txt C:\Users\jacky\Desktop> ###### 例子十一: 只删除7天之前(包括第7天)修改过的mp3文件:
  1. #coding=utf-8
  2. import time,datetime,os
  3. dir_1 = "D:/music/"
  4. K_1 = '.mp3' #文件后缀
  5. class class_clean:
  6. def __init__(self,file_url):
  7. self.file_url = file_url
  8. def delfile(self):
  9. f = list(os.listdir(self.file_url))
  10. print(f"目标目录{self.file_url}\n 开始清理过期文件...")
  11. for i in range(len(f)):
  12. filedate = os.path.getmtime(self.file_url + f[i])
  13. time1 = datetime.datetime.fromtimestamp(filedate).strftime('%Y-%m-%d')
  14. date1 = time.time()
  15. num1 = (date1 - filedate)/60/60/24
  16. if num1 >= 7:
  17. try:
  18. if f[i].endswith(K_1):
  19. os.remove(self.file_url + f[i])
  20. print(f"已删除文件:{time1} & {f[i]}")
  21. except Exception as e:
  22. print(e)
  23. else:
  24. print("......")
  25. if __name__ == '__main__':
  26. use_class = class_clean(dir_1)
  27. use_class.delfile()
  28. print(f'{use_class.file_url}的过期文件已清理完毕。')
复制代码
脚本运行的结果: C:\Users\jacky\Desktop>python xx.py 目标目录D:/music/ 开始清理过期文件... 已删除文件:2022-02-04 & 刘紫玲 - 你怎么说.mp3 已删除文件:2022-02-04 & 张卫健 - 信徒.mp3 已删除文件:2022-02-04 & 张卫健 - 至情至圣.mp3 已删除文件:2022-02-04 & 戴羽彤 - 冬天的秘密.mp3 已删除文件:2022-02-04 & 赵薇 - 偶然.mp3 已删除文件:2022-02-04 & 赵薇 - 往事难忘.mp3 已删除文件:2022-02-04 & 赵薇 - 情深深雨濛濛.mp3 已删除文件:2022-02-04 & 赵薇 - 自从离别后.mp3 ...... D:/music/的过期文件已清理完毕。 C:\Users\jacky\Desktop> 相关文章: 文件操作(创建、读取、写入、追加) 自定义类 if语句 time模块 Windows使用内置模块ftplib




欢迎光临 blog.zhuohua.store (http://blog.zhuohua.store/) Powered by Discuz! 7.2