复制 python 中的文件并检查重复项
copying files in python with check for duplicates
我是这个 python 的新手,正在尝试编写一个程序以递归方式将文件夹结构中的 jpg 文件复制到新文件夹,并在文件名重复时更改文件名。
srcDir = 'Users/photos/2008/thumbnails/' #files in two more dir deep
toDir = 'Users/external_drive/2008/'
shutil.copy(srcDir,toDir)
if filename = filename
filename + '_2.jpg'
以下脚本应该可以满足您的需要。它使用 os.walk
遍历所有文件夹以查找扩展名为 .jpg
的文件。如果 toDir
中已经存在文件名,它会不断递增文件计数器,直到找到一个空槽,并显示所有副本的日志:
import os, shutil
srcDir = 'Users/photos/2008/thumbnails/' #files in two more dir deep
toDir = 'Users/external_drive/2008/'
try:
os.makedirs(toDir)
except:
pass
for root, dirs, files in os.walk(srcDir, topdown=True):
for file in files:
src = os.path.join(root, file)
target = os.path.join(toDir, file)
if file.lower().endswith('.jpg'):
index = 1
while os.path.exists(target):
index +=1
target = os.path.join(toDir, os.path.splitext(file)[0]+ "_%d.jpg" % index)
print "Copying: '%s' to '%s'" % (src, target)
shutil.copy(src, target)
请注意您的代码中存在一些错误:
=
是python中的赋值; ==
检查相等性
shutil.copy()
需要文件而不是目录作为源
要遍历 python 中的目录树,你可以看看这个不错的 tutorial。
要检查文件是否存在,请查看此 Whosebug question。
我是这个 python 的新手,正在尝试编写一个程序以递归方式将文件夹结构中的 jpg 文件复制到新文件夹,并在文件名重复时更改文件名。
srcDir = 'Users/photos/2008/thumbnails/' #files in two more dir deep
toDir = 'Users/external_drive/2008/'
shutil.copy(srcDir,toDir)
if filename = filename
filename + '_2.jpg'
以下脚本应该可以满足您的需要。它使用 os.walk
遍历所有文件夹以查找扩展名为 .jpg
的文件。如果 toDir
中已经存在文件名,它会不断递增文件计数器,直到找到一个空槽,并显示所有副本的日志:
import os, shutil
srcDir = 'Users/photos/2008/thumbnails/' #files in two more dir deep
toDir = 'Users/external_drive/2008/'
try:
os.makedirs(toDir)
except:
pass
for root, dirs, files in os.walk(srcDir, topdown=True):
for file in files:
src = os.path.join(root, file)
target = os.path.join(toDir, file)
if file.lower().endswith('.jpg'):
index = 1
while os.path.exists(target):
index +=1
target = os.path.join(toDir, os.path.splitext(file)[0]+ "_%d.jpg" % index)
print "Copying: '%s' to '%s'" % (src, target)
shutil.copy(src, target)
请注意您的代码中存在一些错误:
=
是python中的赋值;==
检查相等性shutil.copy()
需要文件而不是目录作为源
要遍历 python 中的目录树,你可以看看这个不错的 tutorial。
要检查文件是否存在,请查看此 Whosebug question。