如何在Python中移动文件

我查看了Python os界面,但无法find移动文件的方法。 我将如何做相当于$ mv ...在Python中?

 >>> source_files = '/PATH/TO/FOLDER/*' >>> destination_folder = 'PATH/TO/FOLDER' >>> # equivalent of $ mv source_files destination_folder 

os.rename()shutil.move()

两者都使用相同的语法:

 os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo") shutil.move("path/to/current/file.foo", "path/to/new/destination/for/file.foo") 

请注意,在这两种情况下,创build新文件的目录都必须已经存在(但是,在Windows上,具有该名称的文件一定不能或者会引发exception)。 另请注意,您必须在源和目标参数中包含文件名( file.foo )。 如果更改,文件将被重命名以及移动。

正如在其他答案的评论中已经指出的,在大多数情况下, shutil.move只是简单地调用os.rename 。 但是,如果目标位于与源不同的磁盘上,则会复制并删除源文件。

尽pipeos.rename()shutil.move()都会重命名文件,但最接近Unix mv命令的命令是shutil.move() 。 不同的是,如果源和目标位于不同的磁盘上,则shutil.move()不起作用,而shutil.move()不关心该文件在哪个磁盘上。

对于os.rename或shutil.move,您将需要导入模块。 没有*字符是必要的,以获得所有的文件移动。

我们在/ opt / awesome中有一个名为source的文件夹,其中一个文件名为awesome.txt。

 in /opt/awesome ○ → ls source ○ → ls source awesome.txt python >>> source = '/opt/awesome/source' >>> destination = '/opt/awesome/destination' >>> import os >>> os.rename(source, destination) >>> os.listdir('/opt/awesome') ['destination'] 

我们使用os.listdir来查看文件夹名称实际上已经改变了。 以下是将目的地移回原始位置的方法。

 >>> import shutil >>> shutil.move(destination, source) >>> os.listdir('/opt/awesome/source') ['awesome.txt'] 

这一次我在源文件夹中检查,以确保我创build的awesome.txt文件存在。 它在那里:)

现在我们已经把一个文件夹及其文件从一个源文件移动到一个目标文件,然后再返回。

接受的答案是不正确的,因为问题不在于将文件重命名为文件,而是将许多文件移动到目录中。 shutil.move将完成这项工作,但为此目的, os.rename是无用的(正如注释中所述),因为目标必须有明确的文件名。

这是我目前使用的:

 import os, shutil path = "/volume1/Users/Transfer/" moveto = "/volume1/Users/Drive_Transfer/" files = os.listdir(path) files.sort() for f in files: src = path+f dst = moveto+f shutil.move(src,dst) 

现在function齐全。 希望这可以帮助你。