8

Python で移動するファイルと混同しています。Windows コマンドラインで、ディレクトリ c:\a とディレクトリ c:\b がある場合、次のことができます。

move c:\a c:\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では、ディレクトリを別の既存のディレクトリに移動するにはどうすればよいですか?

4

6 に答える 6

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

と同等です

move c:\a c:\b

Windowsコマンドラインの下

于 2009-07-09T09:46:37.460 に答える
7

Shutilモジュールの使用を試すことができます。

于 2009-07-09T09:43:43.630 に答える
1

os.rename("c:/a/", "c:/b"/) --> フォルダー b 内のフォルダー a の名前を変更します

os.rename("c:/a/", "c:/b/a") --> フォルダ b をフォルダ a に入れる

于 2009-07-09T10:09:12.237 に答える
0

多くのファイル システム操作が必要な場合は、「パス」モジュールを使用することを好みます:
http://pypi.python.org/pypi/path.py/2.2

これは、組み込みの「os.path」モジュールを包む非常に優れた軽量のラッパーです。

また、コード:

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

これには特別な機能があるため、少し奇妙です。

last_part = os.path.basename(src)
于 2009-07-09T10:04:44.930 に答える
-1

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"))
于 2009-07-09T10:34:00.627 に答える
-1

移動先のフル パスを指定する必要があります。

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ドキュメントを見ると、あなたが望むことをするように見えます:

宛先がディレクトリまたはディレクトリへのシンボリック リンクである場合、ソースはディレクトリ内に移動されます。

(そしてそのソース。)

于 2009-07-09T09:43:11.867 に答える