一、选择性拷贝:
编写一个程序,遍历一个目录树,查找特定扩展名的文件(如.pdf、.jpg)。不论这些文件的位置在哪里,将它们拷贝到一个新文件夹中。
代码如下:
#!python3
import tkinter as tk, os, shutil, sys
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
SourceFolder = filedialog.askdirectory(title = '请选择要检索的文件夹:') #获取文件夹
print(SourceFolder)
DestinationFolder = filedialog.askdirectory(title = '请选择存放文件的文件夹:')
#if '/' in SourceFolder :
# 用\替换/,注意'\\'的用法,
# 如果直接使用'\',会被系统识别成转义字符
#SourceFolder = SourceFolder.replace('/', '\\')
if len(SourceFolder) == 0 :
print('未找到要检索的文件夹!程序中止。')
sys.exit()
if len(DestinationFolder) == 0 :
print('未找到存放文件的文件夹!程序中止。')
sys.exit()
os.chdir(SourceFolder)
print('正在检索文件......')
for folder, subfolder, files in os.walk(SourceFolder) :
for fname in files :
if fname.endswith('.pdf'): #此处PDF可换成其它文件类型
print('正在复制:%s' % (folder + fname))
shutil.copy(fname,DestinationFolder)
print('检索完成!')
二、删除不需要的文件:
编写一个程序,遍历一个目录树,查找特别大的文件和文件夹,比如说,超过100MB的文件,将这些文件的绝对路径打印到屏幕上。
#!python3
import tkinter as tk, os
from tkinter import filedialog
root = tk.Tk()
root.withdraw()
SourceFolder = filedialog.askdirectory(title = '请选择要检索大文件的磁盘或文件夹:') #获取文件夹
while True :
try :
FileSize = int(input('请输入检索的最小文件大小(MB)'))
print('\n')
break
except ValueError :
print('只能输入整数数值,不能输入其它字符 !')
continue
if len(SourceFolder) == 0 :
print('未找到源文件夹!程序中止。')
sys.exit()
os.chdir(SourceFolder)
i = 0
m = 0
for folder, subfolders, myfiles in os.walk(SourceFolder) :
i += 1
for eachfile in myfiles :
m += 1
filename = folder +'/'+ eachfile
myfilesize = os.path.getsize(filename)/1024/1024
if myfilesize >= FileSize :
print('超大文件:%s' % filename)
print('文件大小为:%s MB' % str(round(myfilesize,2)))
print('\n检索完成!共检索'+str(i)+'个文件夹,'+str(m)+'个文件。')