1

pythonを使用してアーカイブを自動的に抽出しています。私はそのようにサブプロセスを使用しています:

command = "7z e " + self.dir + " -o" + dest
subprocess.call(command)

ここで、self.dir はアーカイブのディレクトリ (.rar ファイルとして) で、dest は宛先フォルダーです。

私の問題は、それが無計画に機能することです。何らかの理由で、一部のアーカイブは正常に抽出されますが、他のアーカイブは抽出されません。パターンは見つかりませんでしたが、コマンド プロンプトを読みましたが、動作しない場合は印刷されます

Error:
cannot find archive

困ったことに、GUI を使用してまったく同じアーカイブを抽出できます。私の実際のプログラムには何か問題があるようです。

これを修正するにはどうすればよいですか?

4

3 に答える 3

1

現在のディレクトリは何ですか? 「self.dir」が相対パスだけでなく、完全なファイル パスであるかどうかを確認してください。これを試して確認してください:

print os.path.abspath(self.dir)
print os.getcwd()
print os.path.isfile(self.dir)

ちなみに、属性名に「dir」を使うのは残念です。dir組み込み関数です。

于 2012-10-03T12:52:40.007 に答える
1

subprocess.call()引数を渡すときはリストが必要だと思います。これを試して:

command = ["7z", "e", self.dir, "-o", dest]
于 2012-10-03T12:57:16.770 に答える