将以.pdf结尾的文件移动到选定文件夹(Python)
我运行的脚本将在我的mac上 我的根目录是“/Users/johnle/Desktop/” 代码的目的是移动大量文件。 在我的桌面上会有大量的.pdf文件。我想将pdf文件移动到“/Users/johnle/Desktop/pdf” 所以:'/Users/johnle/Desktop/file.pdf'->'/Users/johnle/Desktop/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
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自己代码中的问题。