如何在Python中移动文件?

1468 投票
11 回答
1915829 浏览
提问于 2025-04-17 10:12

我怎么能在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。不过,如果目标位置和源位置在不同的磁盘上,它会先复制文件,然后再删除源文件。

撰写回答