Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将以.pdf结尾的文件移动到选定文件夹(Python)_Python - Fatal编程技术网

将以.pdf结尾的文件移动到选定文件夹(Python)

将以.pdf结尾的文件移动到选定文件夹(Python),python,Python,我运行的脚本将在我的mac上 我的根目录是“/Users/johnle/Desktop/” 代码的目的是移动大量文件。 在我的桌面上会有大量的.pdf文件。我想将pdf文件移动到“/Users/johnle/Desktop/pdf” 所以:'/Users/johnle/Desktop/file.pdf'->'/Users/johnle/Desktop/pdf/' 这是我用python编写的代码: def moveFile(root,number_of_files, to): list

我运行的脚本将在我的mac上

我的根目录是“/Users/johnle/Desktop/” 代码的目的是移动大量文件。 在我的桌面上会有大量的.pdf文件。我想将pdf文件移动到“/Users/johnle/Desktop/pdf”

所以:'/Users/johnle/Desktop/file.pdf'->'/Users/johnle/Desktop/pdf/'

这是我用python编写的代码:

def moveFile(root,number_of_files, to):

     list_of_file = os.listdir(root)

     list_of_file.sort()

    for file in list_of_file:
        name = root + str(file)

         dest = to + str(file)

         shutil.move( name, dest ) 

您可以使用
glob
shutil
模块。例如:

import glob
import shutil

for f in glob.glob('/Users/johnle/Desktop/*.pdf'):
    shutil.copy(f, '/Users/johnle/Desktop/PDF')
(此代码尚未测试)


注意:我的代码复制文件。如果你想移动它们,那么用
shutil.move

替换
shutil.copy
os
模块有很多这样的有趣的玩具,用于操作文件和其他操作系统相关的操作

您可以使用
os
模块中的
rename
功能将文件移动到新位置

import os
os.mkdir(<path>) #creates a new folder at the specified path
os.rename(<original/current path>, <new path>)
导入操作系统
os.mkdir()#在指定路径创建一个新文件夹
重命名(,)

如果.pdf文件的扩展名大小写不一致(例如.pdf、.pdf、.pdf等),您可以使用以下内容:

import os
import shutil
SOURCE_DIR = '/Users/johnle/Desktop/'
DEST_DIR = '/Users/johnle/Desktop/PDF/'

for fname in os.listdir(SOURCE_DIR):
    if fname.lower().endswith('.pdf'):
        shutil.move(os.path.join(SOURCE_DIR, fname), DEST_DIR)

你有什么问题?事实上。除了shutil.move之外,其他一切都正常工作。
mv~/Desktop/*.pdf~/Desktop/pdf
。完成。您给出了一个代码片段,而不是一个完整的文件,甚至第二个代码片段来说明如何调用此函数,并且您说它“无法运行”,但没有解释您看到的错误。试着解释更多。另外,您是否只希望解决此问题一次?如果是这样,只需在Terminal.app中运行一些东西,比如
mkdir~/Desktop/PDF&&mv-i~/Desktop/*.PDF~/Desktop/PDF
。如果您认为这是一个反复出现的问题,请自问为什么要在桌面上创建大量文件,并尽量避免这样做。移动失败,因为您没有正确加入路径?实际错误是什么?这与使用
shutil.move
bar的OP有什么不同?如果文件已经存在,它将失败?@PadraicCunningham不管怎样,它们都能完成相同的任务。我个人更喜欢
os
模块,而不是
shutil
。如果移动不成功,重命名将失败,它会在引擎盖下调用重命名,因此没有difference@PadraicCunningham虽然,
rename
可能会失败,但当发生可以捕获和处理的文件覆盖时,它会产生错误,使用
move
时,如果存在覆盖,则删除原始文件并用新文件覆盖。我宁愿处理异常,也不愿在没有警告的情况下丢失被覆盖文件中的数据。哈哈,你应该在不忙的时候阅读文档,不要回答问题。我在CS职业生涯中的目标是像你一样聪明。很高兴这有帮助。如果这是你选择的答案,别忘了接受它(或者如果你更喜欢另一个答案,接受那个)。这就是我们保持社区活力的方式;)加上一个用于包含
join
,这很可能是OP自己代码中的问题。