这是我正在处理的代码:
from qgis.core import*
import glob, os, shutil, time, qgis
path = r"C:\Temp\testinput"
dest = r"C:\Temp\testoutput"
fname = []
for root,d_names,f_names in os.walk(path):
for f in f_names:
if f.endswith('.kml'):
src = os.path.join(root,f)
print(time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime(src))))
print(os.path.realpath(src))
shutil.copy2(src, dest)
此代码遍历目录并复制文件,但会覆盖具有相同名称的文件。如何防止覆盖部分?如果我在新文件夹中捕获到具有相同名称的文件,我希望将相同类型的文件重命名为“ filename-copy”。
答案 0 :(得分:0)
非常快速的答案;
如果知道扩展名,那就不难了。您可以预先检查文件是否存在。通过添加类似的内容
exists = os.path.isfile(dest)
if exists:
os.rename(dest , dest.replace('.kml', '-copy.kml'))
所以整个事情看起来像这样:
from qgis.core import*
import glob, os, shutil, time, qgis
path = r"C:\Temp\testinput"
dest = r"C:\Temp\testoutput"
fname = []
for root,d_names,f_names in os.walk(path):
for f in f_names:
if f.endswith('.kml'):
src = os.path.join(root,f)
print(time.strftime('%m/%d/%Y', time.gmtime(os.path.getmtime(src))))
print(os.path.realpath(src))
exists = os.path.isfile(dest)
if exists:
os.rename(dest , dest.replace('.kml', '-copy.kml'))
shutil.copy2(src, dest)
答案不是很快;
但是,这假定“ file-copy.kml”尚不存在。如果要保留X份副本,则可以使用其他名称重命名。 在这种情况下,我会建议如下:
exists = os.path.isfile(dest)
if exists:
os.rename(dest , dest.replace('.kml', '-copy_'+id_generator()+'.kml'))
将此位置放置在文件顶部。
import string
import random
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
在哪里借用了从该问题生成一些随机字符的函数; Here's a codepen demo