我怎么能在Python中做mv src/* dest/的等效?

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

当前回答

因为你不关心返回值,你可以这样做

import os
os.system("mv src/* dest/")

其他回答

公认的答案并不是正确的答案,因为这个问题不是关于将一个文件重命名为一个文件,而是将许多文件移动到一个目录中。shutil。动起就动起,但为了这个目的。重命名是无用的(如注释中所述),因为目标必须有显式的文件名。

虽然os.rename()和shutil.move()都将重命名文件,但最接近Unix mv命令的命令是shutil.move()。不同之处在于,如果源文件和目标文件在不同的磁盘上,os.rename()将不起作用,而shutil.move()是文件与磁盘无关的。

也可以使用subprocess.run()方法。

python:
>>> import subprocess
>>> new = "/path/to/destination"
>>> old = "/path/to/new/destination"
>>> process = "mv ..{} ..{}".format(old,new)
>>> subprocess.run(process, shell=True) # do not remember, assign shell value to True.

这在Linux上工作时可以很好地工作。Windows可能会报错,因为没有mv命令。

因为你不关心返回值,你可以这样做

import os
os.system("mv src/* dest/")

Os.rename (), os.replace()或shutil.move()

它们都使用相同的语法:

import os
import shutil

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

注意,必须在源和目标参数中都包含文件名(file.foo)。如果它被更改,文件将被重命名并移动。

还要注意,在前两种情况下,创建新文件的目录必须已经存在。在Windows上,具有该名称的文件必须不存在,否则将引发异常,但os.replace()即使在这种情况下也会无声地替换文件。

正如在其他答案的评论中所指出的,shutil。Move只是调用os。在大多数情况下重命名。但是,如果目标文件位于与源文件不同的磁盘上,则会复制源文件,然后删除源文件。