我很困惑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"))