@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'
答案 0 :(得分:0)
您正在致电的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的一小部分,我们可以解决一些问题。
答案 1 :(得分:0)
@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)