我对在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中如何将目录移动到另一个现有目录?
答案 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"))