0

@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))类型错误:move()缺少1个必需的位置参数:'dst'

4

2 回答 2

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)
于 2019-04-10T22:30:25.170 回答
0

AFAICT 您在 shutil.move(os.path.join(srcDir, dst, dstDir)) 没有to. 根据文档,您需要一个fromandto文件夹。 https://docs.python.org/3/library/shutil.html#shutil.move

我猜你的想法是以某种方式创建一个包含dstand的字符串src

dst = (srcDir+"/"+file[:-4]+"/"+dstDir+"/"+"2018")

你真正想要的是沿着这条线的东西:

dst_dir = dstDir+"/"+"2018"
src_dir = srcDir+"/"+file[:-4]
shutil.move(src_dir,dst_dir)

以上代码仅用于演示。如果这不起作用,您可以treels -la例如您的 srcdir 和 dstdir 的一小部分,我们可以解决一些问题。

于 2019-04-10T15:38:12.407 回答