2012-03-19 13 views
1

I取得するには、次のエラー....はUnicodeに強要:必要文字列またはバッファ、のTarFileが見つかりました。

Traceback (most recent call last): 
    File "deploycommerce.py", line 56, in <module> 
    if tarfile.is_tarfile(optfile): 
    File "/usr/lib/python2.7/tarfile.py", line 2587, in is_tarfile 
    t = open(name) 
    File "/usr/lib/python2.7/tarfile.py", line 1658, in open 
    return func(name, "r", fileobj, **kwargs) 
    File "/usr/lib/python2.7/tarfile.py", line 1720, in gzopen 
    fileobj = bltn_open(name, mode + "b") 
TypeError: coercing to Unicode: need string or buffer, TarFile found 

私は、次の楽しみにしてみてください...

optfile = tarfile.open(opt_tar_input,"r:gz") 
# ERROR THROWN IN FOLLOWING... 
if tarfile.is_tarfile(optfile): 
    # extract all contents 
    test ="" 

おかげでみんな

答えて

4

tarfile.is_tarfileは、というファイル名で、ファイルオブジェクトではなく、という名前をとります。

tarfile.openが正常に呼び出された場合、パスはtarfileを指しています。通常のPythonのコーディングスタイルが

try: 
    optfile = tarfile.open(...) 
except tarfile.ReadError: 
    # not a tarfile 

これは通常、スローガン「it's easier to ask forgiveness than permission」に要約されているだろうと

注意。

0

tarfile.is_tarfileは、ファイル名ではなく、TarFileオブジェクトです。とにかくチェックは冗長です。タールファイルでなければ、tarfile.openは例外を発生させます。

関連する問題