14

ディレクトリ内のすべての圧縮フォルダーを検索し、1 つの圧縮ファイルをターゲットにし、圧縮ファイル内にある Excel ファイルを取得して別の場所に移動する単純なプログラムがあります (圧縮されたファイルの数に対して、すべての Excel ファイルに対してこれを行います)。フォルダー):

path = 'C:\Users\me\Documents\Extract'
new_path = 'C:\Users\me\Documents\Test'
i = 0
for folder in os.listdir(path):
        path_to_folder = os.path.join(path, folder)

        zfile = zipfile.ZipFile(os.path.join(path, folder))
        for name in zfile.namelist():
            if name.endswith('.xls'):
                new_name = str(i)+'_'+name
                new_path = os.path.join(new_path, new_name)
                zfile.close()
                #os.rename(path_to_folde, new_path) -- ERROR HERE
                shutil.move(path_to_folde, new_path) -- AND ERROR HERE
        i += 1

Excelファイルos.renameshutil.move. エラーが発生し続けます:

WindowsError: [エラー 32] 別のプロセスによって使用されているため、プロセスはファイルにアクセスできません。

すべてのフォルダーを閉じたので、このエラーが続く理由がわかりません。

4

3 に答える 3

12
path = 'C:\Users\me\Documents\Extract'
destination_path = 'C:\Users\me\Documents\Test'
i = 0
for folder in os.listdir(path):
    path_to_zip_file = os.path.join(path, folder)

    zfile = zipfile.ZipFile(path_to_zip_file)
    for name in zfile.namelist():
        if name.endswith('.xls'):
            new_name = str(i)+'_'+name
            new_path = os.path.join(destination_path, new_name)
            # This is obviously going to fail because we just opened it
            shutil.move(path_to_zip_file, new_path)
    i += 1
    zfile.close()

コード スニペットの一部の変数名を変更しました。あなたは今あなたの問題を見ていますか?プロセスが開いているzip ファイルを移動しようとしています。.xlszipfile モジュールを使用して、ファイルを宛先にコピーする必要があります。

于 2013-06-13T19:31:20.830 に答える
5

Windows コンピューターを使用している場合は、タスク マネージャーに移動し、[プロセス] タブをクリックします。python と表示されているところまでスクロールして、プロセスを終了します。他の何かで python を実行している可能性があります。次に、python プログラムを再度実行してみてください。動作するはずです。

于 2015-07-20T17:09:37.897 に答える