2

私はこのようなコードを持っています

import rarfile
pwd = None
rar = rarfile.RarFile(source_filename)
rar.extractall(dest_dir,None,pwd)  # error from here

このコードはubuntuで動作しています。Windowsでこれを実行すると、このようなエラーが発生します

Traceback (most recent call last):
  File "1_bete_rar.pyw", line 132, in extract
  File "1_bete_rar.pyw", line 176, in unrar_file
  File "rarfile.pyc", line 586, in extractall
  File "rarfile.pyc", line 1112, in _extract
  File "rarfile.pyc", line 1704, in custom_popen
  File "subprocess.pyc", line 711, in __init__
  File "subprocess.pyc", line 948, in _execute_child
WindowsError: [Error 2] The system cannot find the file specified

私のコードの問題は何ですか?WindowsでPythonを使用してrarファイルを抽出するにはどうすればよいですか?

4

3 に答える 3

3

rarfileFAQに記載されているように (およびsubprocessスタック トレースのトレースによって明らかにされているように)、

[rarfile] は unrar コマンドライン ユーティリティに依存して、実際の解凍を行います。

デフォルトでは、それが PATH にあると想定されていることに注意してください。unrar の起動に失敗した場合は、これを修正する必要があります。

http://www.rarlab.com/rar_add.htmから UnRAR を取得し、PATH のどこかに配置します (スクリプトを実行しているディレクトリなど)。

于 2013-09-12T14:59:36.793 に答える
0

Windows で Python を使用する際によくある問題の 1 つは、パス区切り文字が \ であることですが、これは Python でエスケープする必要がある特殊文字です。source_filename を印刷すると、これが正しく設定されているかどうかを確認できるはずです。

例えば

source_filename = 'c:\users\prosserc\documents\myfile.txt'

正しく動作しません。いくつかの代替手段を次に示します。

生の文字列を使用します。

source_filename = r'c:\users\prosserc\documents\myfile.txt'

または、os.path.join を使用して、user_profile などの環境変数に結合します

source_filename = os.path.join(os.getenv('userprofile'), 'documents', 'myfile.txt')
于 2013-09-12T14:53:32.970 に答える