1

このフォルダー構造には多くのファイルがあります。

test[dir]
  -test1 - 123.avi
  -video[dir]
     -test2 - 123.avi

ターゲット ディレクトリにファイル名 (test1、test2 など) に基づいてフォルダーを作成し、ファイルをそれぞれのフォルダーに移動したいと考えています。

別のスレッドのコードに基づいてこれを試しました:

#!/usr/bin/env python

import os, shutil

src = "/home/koogee/Code/test"
dest = "/home/koogee/Downloads"

for dirpath, dirs, files in os.walk(src):
    for file in files:
        if not file.endswith('.part'):
            Dir = file.split("-")[0]
            newDir = os.path.join(dest, Dir)
            if (not os.path.exists(newDir)):
                os.mkdir(newDir)

            shutil.move(file, newDir)

次のエラーが表示されます。

Traceback (most recent call last):
  File "<stdin>", line 8, in <module>
  File "/usr/lib/python2.7/shutil.py", line 299, in move
    copy2(src, real_dst)
  File "/usr/lib/python2.7/shutil.py", line 128, in copy2
    copyfile(src, dst)
  File "/usr/lib/python2.7/shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: 'test1'

奇妙なのは、/home/koogee/Downloads に「test1」という名前のフォルダーが作成されていることです。

4

1 に答える 1

2

を実行しようとするとshutil.move()file変数はディレクトリのコンテキストを持たない単なるファイル名になるため、スクリプトの現在のディレクトリでその名前のファイルを探します。

絶対パスを取得するにos.path.join(dirpath, file)は、ソースとして使用します。

shutil.move(os.path.join(dirpath, file), newDir)
于 2012-10-23T22:24:14.753 に答える