在python下移动文件

时间:2009-07-09 09:36:13

标签: python windows move

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

move c:\a c:\b
将p移动到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中如何将目录移动到另一个现有目录?

6 个答案:

答案 0 :(得分:16)

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

相当于

move c:\a c:\b
在Windows命令行下

答案 1 :(得分:8)

您可以尝试使用Shutil模块。

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

它是内置的'os.path'模块的一个非常好的轻量级包装器。

还代码:

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

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

last_part = os.path.basename(src)

答案 4 :(得分:0)

您需要说明要移动到的完整路径:

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看起来会做你想做的事情:

  

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

(及其source。)

答案 5 :(得分:0)

使用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"))