2024-04-18 03:54:05 发布
网友
我查看了Python^{}接口,但找不到移动文件的方法。我如何在Python中做与$ mv ...等价的事情?
$ mv ...
>>> source_files = '/PATH/TO/FOLDER/*' >>> destination_folder = 'PATH/TO/FOLDER' >>> # equivalent of $ mv source_files destination_folder
^{}、^{}或^{}
它们都使用相同的语法:
import os import shutil os.rename("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") os.replace("path/to/current/file.foo", "path/to/new/destination/for/file.foo")
注意,在源参数和目标参数中都必须包含文件名(file.foo)。如果它被更改,文件将被重命名和移动。 还要注意,在前两种情况下,创建新文件的目录必须已经存在。在Windows上,具有该名称的文件不能存在,否则将引发异常,但即使出现这种情况,os.replace()也将自动替换文件。
file.foo
os.replace()
正如在对其他答案的评论中所指出的,在大多数情况下,shutil.move只是调用os.rename。但是,如果目标位于与源不同的磁盘上,则它将复制并删除源文件。
shutil.move
os.rename
对于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来查看文件夹名实际上已更改。 这是将目标移回源的shuil。
>>> import shutil >>> shutil.move(destination, source) >>> os.listdir('/opt/awesome/source') ['awesome.txt']
这次我检查了源文件夹,以确保我创建的awesome.txt文件存在。就在那里:)
现在,我们已经将文件夹及其文件从源移到目标,然后再移回来。
尽管os.rename()和shutil.move()都将重命名文件,但最接近Unix mv命令的命令是shutil.move()。不同之处在于,如果源和目标位于不同的磁盘上,os.rename()将不起作用,而shutil.move()不关心文件位于哪个磁盘上。
os.rename()
shutil.move()
^{} 、^{} 或^{}
它们都使用相同的语法:
注意,在源参数和目标参数中都必须包含文件名(
file.foo
)。如果它被更改,文件将被重命名和移动。 还要注意,在前两种情况下,创建新文件的目录必须已经存在。在Windows上,具有该名称的文件不能存在,否则将引发异常,但即使出现这种情况,os.replace()
也将自动替换文件。正如在对其他答案的评论中所指出的,在大多数情况下,
shutil.move
只是调用os.rename
。但是,如果目标位于与源不同的磁盘上,则它将复制并删除源文件。对于os.rename或shutil.move,需要导入模块。 不需要*字符来移动所有文件。
我们在/opt/awesome有一个名为source的文件夹,其中一个文件名为awesome.txt。
我们使用os.listdir来查看文件夹名实际上已更改。 这是将目标移回源的shuil。
这次我检查了源文件夹,以确保我创建的awesome.txt文件存在。就在那里:)
现在,我们已经将文件夹及其文件从源移到目标,然后再移回来。
尽管
os.rename()
和shutil.move()
都将重命名文件,但最接近Unix mv命令的命令是shutil.move()
。不同之处在于,如果源和目标位于不同的磁盘上,os.rename()
将不起作用,而shutil.move()
不关心文件位于哪个磁盘上。相关问题 更多 >
编程相关推荐