blog.zhuohua.store's Archiver

admin 发表于 2019-9-26 10:05

文件操作(复制、重命名、删除等)

例子一:
复制文件:

#coding=utf-8
import shutil

Path_1 = "[color=Blue]./[/color]test1.txt" #源文件;相对路径,以脚本所在目录为家目录
Path_2 = "[color=Blue]../[/color]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
[color=Purple]文件复制成功。[/color]

C:\Users\jacky\Desktop>


脚本运行的结果:(源文件不存在时)
C:\Users\jacky\Desktop>python xx.py
文件复制失败,原因: [color=Red][Errno 2] No such file or directory: './test1.txt'[/color]

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
[color=Purple]文件复制成功。[/color]

C:\Users\jacky\Desktop>


脚本运行的结果:(目录d:\dir1不存在时)
C:\Users\jacky\Desktop>python xx.py
文件复制失败,原因: [color=Red][Errno 2] No such file or directory: 'd:/dir1/test1.txt'[/color]

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
[color=Purple]文件复制成功。[/color]

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) [color=DarkOrchid]#把源文件D:\dir1\佛山_Database1.mdb 重命名为 新文件D:\dir1\广州_Database1.mdb[/color]
       
except Exception as e:
        print(f"文件重命名失败,原因: {e}")
       
else:
        print("文件重命名成功。")


脚本运行的结果:(文件重命名成功时)
C:\Users\jacky\Desktop>python xx.py
[color=Purple]文件重命名成功。[/color]

C:\Users\jacky\Desktop>


脚本运行的结果:(源文件不存在时)
C:\Users\jacky\Desktop>python xx.py
文件重命名失败,原因: [color=Red][WinError 2] 系统找不到指定的文件。: 'D:/dir1/佛山_Database1.mdb' -> 'D:/dir1/广州_Database1.mdb'[/color]

C:\Users\jacky\Desktop>


脚本运行的结果:(目标文件已经存在时)
C:\Users\jacky\Desktop>python xx.py
文件重命名失败,原因: [color=Red][WinError 183] 当文件已存在时,无法创建该文件。: 'D:/dir1/佛山_Database1.mdb' -> 'D:/dir1/广州_Database1.mdb'[/color]

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
[color=Purple]文件D:\dir1\广州_Database1.mdb删除成功。[/color]

C:\Users\jacky\Desktop>


脚本运行的结果:(文件不存在时)
C:\Users\jacky\Desktop>python xx.py
文件D:\dir1\广州_Database1.mdb删除失败,原因: [color=Red][WinError 2] 系统找不到指定的文件。: 'D:\\dir1\\广州_Database1.mdb'[/color]

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
[color=Purple]源文件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已经被删除。[/color]

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 的文件大小为[color=Purple]10.83[/color]MB
d:/music/戴羽彤 - 冬天的秘密.mp3 的创建时间为 [color=Purple]2020-02-04 22:03:55[/color]
d:/music/戴羽彤 - 冬天的秘密.mp3 的修改时间为 [color=Purple]2020-02-04 22:03:07[/color]
d:/music/戴羽彤 - 冬天的秘密.mp3 的访问时间为 [color=Purple]2020-05-12 19:13:19[/color]

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']
[color=Purple]<class 'list'>[/color]

C:\Users\jacky\Desktop>





######

例子九:
删除7天之前(包括第7天)修改过的所有格式的文件:
[code]#coding=utf-8
import time,datetime,os

dir_1 = "D:/music/"

class class_clean:
        def __init__(self,file_url):
                self.file_url = file_url
               
        def delfile(self):
                f =  list(os.listdir(self.file_url))
               
                print(f"目标目录{self.file_url}\n  开始清理过期文件...")
                for i in range(len(f)):
                        filedate = os.path.getmtime(self.file_url + f[i])
                        time1 = datetime.datetime.fromtimestamp(filedate).strftime('%Y-%m-%d')
                        date1 = time.time()
                        num1 = (date1 - filedate)/60/60/24
                               
                        if num1 >= 7:
                                try:
                                        os.remove(self.file_url + f[i])
                                        print(f"已删除文件:{time1} & {f[i]}")         
                                except Exception as e:                                             
                                        print(e)                                          
                else:
                        print("......")

if __name__ == '__main__':

        use_class = class_clean(dir_1)
        use_class.delfile()

        print(f'{use_class.file_url}的过期文件已清理完毕。')[/code]
脚本运行的结果:
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文件:
[code]#coding=utf-8
import os

dir_1 = "d:\\share\\"
K_1 = '.txt' #文件后缀

f = list(os.listdir(dir_1))
print(f)
print(type(f))

print("-" * 10)

for i in range(len(f)):
        if f[i].endswith(K_1):
                print(f[i])[/code]
脚本运行的结果:
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']
<class 'list'>
----------
[color=Purple]1.txt
2.txt[/color]

C:\Users\jacky\Desktop>





######

例子十一:
只删除7天之前(包括第7天)修改过的mp3文件:
[code]#coding=utf-8
import time,datetime,os

dir_1 = "D:/music/"
K_1 = '.mp3' #文件后缀

class class_clean:
        def __init__(self,file_url):
                self.file_url = file_url
               
        def delfile(self):
                f =  list(os.listdir(self.file_url))
               
                print(f"目标目录{self.file_url}\n  开始清理过期文件...")
                for i in range(len(f)):
                        filedate = os.path.getmtime(self.file_url + f[i])
                        time1 = datetime.datetime.fromtimestamp(filedate).strftime('%Y-%m-%d')
                        date1 = time.time()
                        num1 = (date1 - filedate)/60/60/24
                               
                        if num1 >= 7:
                                try:
                                        if f[i].endswith(K_1):
                                                os.remove(self.file_url + f[i])
                                                print(f"已删除文件:{time1} & {f[i]}")         
                                except Exception as e:                                             
                                        print(e)                                          
                else:
                        print("......")

if __name__ == '__main__':

        use_class = class_clean(dir_1)
        use_class.delfile()

        print(f'{use_class.file_url}的过期文件已清理完毕。')[/code]
脚本运行的结果:
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>





相关文章:
[url=http://blog.zhuohua.store/viewthread.php?tid=154&extra=page%3D1]文件操作(创建、读取、写入、追加)[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=122&extra=page%3D1]自定义类[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=123&extra=page%3D1]if语句[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=137&page=1&extra=#pid138]time模块[/url]
[url=http://blog.zhuohua.store/viewthread.php?tid=161&page=1&extra=#pid162]Windows使用内置模块ftplib[/url]

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.