如何在Python中移动文件?
我怎么能在Python里做和mv
一样的事情呢?
mv "path/to/current/file.foo" "path/to/new/destination/for/file.foo"
11 个回答
132
在Python 3.4之后,你可以使用pathlib
里的Path
类来移动文件。
from pathlib import Path
Path("path/to/current/file.foo").rename("path/to/new/destination/for/file.foo")
https://docs.python.org/3.4/library/pathlib.html#pathlib.Path.rename
341
虽然 os.rename()
和 shutil.move()
都可以用来重命名文件,但最接近 Unix 系统中的 mv 命令的是 shutil.move()
。它们的区别在于,os.rename()
在源文件和目标文件不在同一个磁盘时就无法使用,而 shutil.move()
则不受磁盘限制,可以在不同的磁盘之间移动文件。
2189
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.rename
。不过,如果目标位置和源位置在不同的磁盘上,它会先复制文件,然后再删除源文件。