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

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

当前回答

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

其他回答

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

根据这里描述的答案,使用subprocess是另一种选择。

就像这样:

subprocess.call("mv %s %s" % (source_files, destination_folder), shell=True)

我很好奇,与shutil相比,这种方法的优点和缺点。因为在我的情况下,我已经使用subprocess的其他原因,它似乎工作,我倾向于坚持它。

这取决于运行脚本的shell。mv命令适用于大多数Linux shell (bash、sh等),但也适用于Windows上的Git bash等终端。对于其他终端,您必须将mv更改为另一个命令。

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

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

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

  current_path = "" ## source path

  new_path = "" ## destination path

  os.chdir(current_path)

  for files in os.listdir():

        os.rename(files, new_path+'{}'.format(f))
        shutil.move(files, new_path+'{}'.format(f)) ## to move files from 

C:——> D: