@nmnh我试图移动200多个pdf文件,每个文件分别已经创建并命名为2018的文件夹。每个文件夹的目标路径类似于-GFG-0777 >> 2018。每个pdf都有一个唯一的GFG-0 ###名称,该名称与我已经创建的指向2018目标文件夹的文件夹相匹配。不知道如何迭代并将每个pdf放入正确的文件夹....:/
我已经尝试了shutil.move,我认为这是最好的,但我认为有路径问题。
import os
import shutil
srcDir = r'C:\Complete'
#print (srcDir)
dstDir = r'C:\Python27\end_dir'
dirList = os.listdir(srcDir)
for f in dirList:
fp = [f for f in dirList if ".pdf" in f] #list comprehension to iterate task (flat for loop)
for file in fp:
dst = (srcDir+"/"+file[:-4]+"/"+dstDir+"/"+"2018")
shutil.move(os.path.join(srcDir, dst, dstDir))
错误:shutil.move(os.path.join(srcDir,dst,dstDir))TypeError:move()缺少1个必需的位置参数:'dst'
AFAICT你在没有shutil.move(os.path.join(srcDir, dst, dstDir))
的情况下调用to
。根据文档,您需要有一个from
和to
文件夹。 https://docs.python.org/3/library/shutil.html#shutil.move
我想你的想法是以某种方式创建一个包含dst
和src
的字符串:
dst = (srcDir+"/"+file[:-4]+"/"+dstDir+"/"+"2018")
你真正想要的是这条线:
dst_dir = dstDir+"/"+"2018"
src_dir = srcDir+"/"+file[:-4]
shutil.move(src_dir,dst_dir)
以上代码仅供演示。如果这不起作用你可以tree
或ls -la
示例你的srcdir和dstdir的一小部分,我们可以解决一些问题。
@nmanh我设法解决了。感谢您使用src和dst调用问题来创建字符串。删除字符串后,我调整了一点,但发现代码中有太多“文件”。我不得不把它们中的两个“file1”并在src和dst之间的shutil.move中添加一个逗号。再次感谢
import os
import shutil
srcDir = r'C:\Complete'
#print (srcDir)
dstDir = r'C:\Python27\end_dir'
dirList = os.listdir(srcDir)
for file in dirList:
fp = [f for f in dirList if ".pdf" in f] #list comprehension to iterate task
(flat for loop)
for file in fp:
if ' ' in file: #removing space in some of pdf names noticed during fp print
file1 = file.split(' ')[0]# removing space continued
else:
file1 = file[:-4]# removing .pdf
final = dstDir+"\\"+file1+"\\2018"
print (srcDir+"\\"+file1+" "+final)
shutil.move(srcDir+"\\"+file,final)