我正在尝试创建一个脚本,将所有图片从我的downloads文件夹移动到我的图片文件夹。我的脚本工作到目前为止(移动文件),除非它试图移动目标文件夹中已经具有相同名称的文件-就像使用printscreen一样。如果printscreen1.png已经存在于图片中,它将不会移动文件。
对于这样的文件,我想要重命名文件并将日期或时间添加到文件名中,然后在不替换原始printscreen的情况下移动它,这样我就可以让这两个和所有的printscreen继续运行下去。
import os
import shutil
import datetime
downloadsb = os.path.join('B:\\Downloads')
pictures = os.path.join('B:\\Pictures')
for f in os.listdir(downloadsb):
if f.endswith((".jpg", ".gif", ".jpeg", ".png", ".ico", ".psd", ".sfw", ".webp", ".pdd", ".psb", ".bmp", ".rle", ".dib", ".eps", ".iff", ".tdi", ".jpf",
".jpx", ".jp2", ".j2c", ".jxk", ".jpc", ".jps", ".mp0", ".pcx", ".pdp", ".raw", ".pxr", ".pns")):
shutil.move(os.path.join(downloadsb, f), pictures)
if os.path.isfile(f):
os.rename(f,f + "date")
下面是我的错误消息:
raise Error, "Destination path '%s' already exists" % real_dst
shutil.Error: Destination path 'B:\Pictures\printscreen1.png' already exists
这就是我到目前为止所拥有的,我将感谢任何帮助或建议。谢谢
发布于 2018-12-03 09:29:34
有一个内置库可以检查文件是否是图像。此外,您还需要遍历目录(文件夹)中的文件。像这样的东西应该可以工作(未经过测试):
import os
import shutil
import datetime
import imghdr
downloadsb = os.path.join('B:\\Downloads')
pictures = os.path.join('B:\\Pictures')
files = os.listdir(downloadsb)
for f in files:
try:
imghdr.what(f)
dest_name = f
if os.path.exists( os.path.join(pictures, dest_name) ):
dest_name += datetime.datetime.now().strftime('%H%M%S')
shutil.move(os.path.join(downloadsb, f),
os.path.join(pictures, dest_name))
except Exception as e:
continue
发布于 2018-12-03 09:29:56
为什么不在搬家前检查一下。类似于下面的内容
注意:如果文件存在,您可以执行不同类型的重命名。我只需将_new附加到扩展中。不完全是你想要的,但这应该会给出一个想法
import os
import shutil
import datetime
import glob
downloadsb = os.path.join('src')
pictures = os.path.join('dst')
for f in glob.glob(downloadsb + '/*'):
if f.endswith(
(".jpg", ".gif", ".jpeg", ".png", ".ico", ".psd", ".sfw", ".webp", ".pdd", ".psb", ".bmp",
".rle", ".dib", ".eps", ".iff", ".tdi", ".jpf", ".jpx", ".jp2", ".j2c", ".jxk", ".jpc", ".jps",
".mp0", ".pcx", ".pdp", ".raw", ".pxr", ".pns")):
dstFile = os.path.join(pictures, os.path.split(f)[1])
if os.path.exists(dstFile):
# Do whatever you want to rename the file here
shutil.move(f, dstFile + '_new')
else:
shutil.move(f, dstFile)
在运行之前
dst:
tmp.jpg
src:
tmp.jpg
运行后
dst:
tmp.jpg tmp.jpg_new
src:
https://stackoverflow.com/questions/53586190
复制相似问题