geekdoc-python-zh/docs/pythoncentral/how-to-rename-move-a-file-i...

2.1 KiB
Raw Permalink Blame History

如何在 Python 中重命名(移动)文件

原文:https://www.pythoncentral.io/how-to-rename-move-a-file-in-python/

重命名(在 Python 中称为移动)Python 中的文件非常简单,由于有一个方便的模块叫做shutil,只需几行代码就可以完成。

shutil有一个名为move的函数,它准确地执行函数名所暗示的功能。它将文件或目录从一个位置移动到另一个位置。

这是一个非常简单但完整的例子:


import shutil
def move(src, dest): 
 shutil.move(src, dest) 

简单的东西。该函数接收源文件或目录,并将其移动到目标文件或目录。

shutil.copy vs os.rename

如果文件或目录在当前的本地文件系统上,shutil.move使用os.rename来移动文件或目录。否则,它使用shutil.copy2将文件或目录复制到目的地,然后删除源。

我们之所以用shutil.move而不用os.rename是因为上面的原因。函数shutil.move已经处理了一个文件不在当前文件系统上的情况,它还处理将目录复制到目的地的操作。任何os.rename抛出的异常在shutil.move中也会得到妥善处理,因此无需担心。

shutil.move确实以shutil.Error的形式抛出自己的异常。当目标文件或目录已经存在时,或者当您试图将源文件或目录复制到自身时,它会这样做。

不幸的是,shutil.move中没有选项提供用于测量进度的回调函数。你必须为此编写自己的复制函数,由于需要计算文件数量和测量它们的大小,这可能会慢一点。

真的就这么简单。另一件需要注意的事情是,如果在当前的文件系统上,我们调用move函数的时间将是瞬时的,而当用于移动到一个单独的驱动器时,例如,调用将花费与典型的复制操作相同的时间。

如果你有兴趣了解shutil.move函数是如何实现的,请点击链接获取源代码。

超级短,超级简洁,超级牛逼。

后来的 Pythonistas