2016-09-06 2 views
0

最近、私はここで、ユーザの介入なしに、.rarファイルと.zipファイルを自動的に抽出するスクリプトで助けが必要だとここでスレッドを作った。私はそれは素晴らしい作品の.rarファイルにこのスクリプトを実行して初めて、それが正しいディレクトリとすべてのものにファイルを抽出しますが、私は再びそれを実行した場合、それが印刷さ(Python)linuxコマンドunrarの問題は、私の人生にとって不可能なのですか?

import os 
import re 
from subprocess import check_call 
from os.path import join 

rx = '(.*zip$)|(.*rar$)|(.*r00$)' 
path = "/mnt/externa/Torrents/completed/test" 

for root, dirs, files in os.walk(path): 
    if not any(f.endswith(".mkv") for f in files): 
     found_r = False 
     for file in files: 
      pth = join(root, file) 
      try: 
       if file.endswith(".zip"): 
        print("Unzipping ",file, "...") 
        check_call(["unzip", pth, "-d", root]) 
        found_zip = True 
       elif not found_r and file.endswith((".rar",".r00")): 
        check_call(["unrar","e","-o-", pth, root]) 
        found_r = True 
        break 
      except ValueError: 
       print ("OOps! That did not work") 

:人々の様々な助けを借りて、私はこれを作りましたエラー:

Extracting from /mnt/externa/Torrents/completed/test/A.Film/Subs/A.Film.subs.rar 

No files to extract 
Traceback (most recent call last): 
    File "unrarscript.py", line 20, in <module> 
    check_call(["unrar","e","-o-", pth, root]) 
    File "/usr/lib/python2.7/subprocess.py", line 541, in check_call 
    raise CalledProcessError(retcode, cmd) 
subprocess.CalledProcessError: Command '['unrar', 'e', '-o-', '/mnt/externa/Torrents/completed/test/A.Film/Subs/A.Film.subs.rar', '/mnt/externa/Torrents/completed/test/A.Film/Subs']' returned non-zero exit status 10 

は、だから私は除いて/試してみましたが、私は右のそれをやったとは思わない、誰もがこのスクリプトの最後の仕上げに助けることができますか?

+1

はファイルですか? "抽出するファイルがありません"は、unrarがそれを見つけることができないようです – marcadian

+0

うん、ファイルがあります。 – nillenilsson

答えて

0

は、unrarがゼロ以外のエラーコードを返す場合は、CalledProcessError例外を発生させます。

この

あなたのエラーメッセージ表示:

returned non-zero exit status 10

Rar.txtは、エラーコードの次のリストが含まれています:私はあなたが「スキップする-o-を使用して参照

Code Description 

    0  Successful operation. 
    1  Non fatal error(s) occurred. 
    2  A fatal error occurred. 
    3  Invalid checksum. Data is damaged. 
    4  Attempt to modify an archive locked by 'k' command. 
    5  Write error. 
    6  File open error. 
    7  Wrong command line option. 
    8  Not enough memory. 
    9  File create error 
    10  No files matching the specified mask and options were found. 
    11  Wrong password. 
    255  User stopped the process. 

(WinRARのインストールフォルダにあります)既存のファイル。ファイルを上書きしようとしています。パックされたファイルがすでに存在する場合は、エラーコード10が返されます。スクリプトをすぐに再実行すると、このエラーがスローされるのは正常です。

C:\>unrar e -o- testfile.rar 

UNRAR 5.30 freeware  Copyright (c) 1993-2015 Alexander Roshal 


Extracting from testfile.rar 

No files to extract 

C:\>echo %errorlevel% 
10 

あなたはおそらくそれを処理するために、このような何かを行うことができます。

except CalledProcessError as cpe: 
    if cpe.returncode == 10: 
     print("File not overwritten") 
    else: 
     print("Some other error") 

私はあなたがvobsubsを抽出しようと参照してください。 vobub rar内の.subファイルが同じファイル名を持つ可能性もあります。

関連する問題