在python下移动文件

我很困惑python下的文件移动。 在Windows命令行下,如果我有目录c:\ a和目录c:\ b,我可以做

move c:\ac:\b 

将a移动到b的结果是目录结构c:\ b \ a

如果我用os.rename或shutil.move来试试这个:

 os.rename("c:/a", "c:/b") 

我明白了

 WindowsError: [Error 17] Cannot create a file when that file already exists 

如果我移动一个单一的文件在c:\ a下,它的工作原理。

在Python中,我如何将目录移动到另一个现有的目录?

 os.rename("c:/a", "c:/b/a") 

相当于

 move c:\ac:\b 

在windows命令行下

您可以尝试使用Shutil模块。

os.rename(“c:/ a /”,“c:/ b”/) – >更改文件夹b中的文件夹a的名称

os.rename(“c:/ a /”,“c:/ b / a”) – >将文件夹b放入文件夹a

当我需要很多文件系统操作时,我更喜欢使用“路径”模块:
http://pypi.python.org/pypi/path.py/2.2

这是一个很好的,轻量级的内置“os.path”模块的包装。

还代码:

 last_part = os.path.split(src)[1] 

有点奇怪,因为这个有特殊的功能:

 last_part = os.path.basename(src) 

您将需要声明它被移动到的完整路径:

 src = 'C:\a' dst_dir = 'C:\b' last_part = os.path.split(src)[1] os.rename(src, os.path.join(dst_dir, last_part)) 

实际上,看起来shutil.move会通过查看它的文档来做你想做的事情:

如果目标是目录或目录的符号链接,则将源移动到目录中。

(和它的来源 )

使用Twisted的FilePath :

 from twisted.python.filepath import FilePath FilePath("c:/a").moveTo(FilePath("c:/b/a")) 

或者更一般地说:

 from twisted.python.filepath import FilePath def moveToExistingDir(fileOrDir, existingDir): fileOrDir.moveTo(existingDir.child(fileOrDir.basename())) moveToExistingDir(FilePath("c:/a"), FilePath("c:/b"))