2017-08-22 6 views
0

私が開いて、次のコードでのPythonを使用してExcelファイルを読み込むしようとしています:Pythonは:エラーは、Excelのファイルを開くときに観察

Traceback (most recent call last): 
    File "C:\EclipseWorkspaces\PY2.7\PXBCM1.5\src\Translator.py", line 43, in <module> 
    fr = open('%s\%s'% (fp,fn),'r') 
NameError: name 'fp' is not defined 

if __name__ == '__main__': 
    print len(sys.argv) 
    if len(sys.argv) > 1: 
     print len(sys.argv) 
     fp = sys.argv[1] 
     fn = sys.argv[2] 
    else: 
     fn = raw_input('Please enter the file path of your excel file: ') 
     print 'ok' 
    fw = fn[0:12] + 'Translated' + fn[15:] 
    print 'ok1' 

    fr = open('%s\%s' % (fp, fn), 'r') 
    fw = open('%s\%s' % (fp, fw), 'wb') 

は、残念ながら、私は次のエラーを取得します

私のコードに何が問題なのか分かりません。

答えて

0

エラーメッセージに示されているように、名前fpは定義されていません。あなたのコードを見ると、elseの条件で分岐したコードがfpという文字通り定義されていなかったと仮定します。

私たちはあなたのコードの抜粋を見てみると:

if len(sys.argv) > 1: 
    print len(sys.argv) 
    fp = sys.argv[1] # <-- fp is defined: GOOD 
    fn = sys.argv[2] 
else: 
    fn = raw_input('Please enter the file path of your excel file: ') 
    print 'ok' 
    # <-- fp was not defined: BAD 

だからあなたはopen関数を呼び出す時点で、fpfnの両方がfp = …fn = …ようなステートメントで、定義されたことを確認してください。


それとは別に、あなたのコードが一つの大きな欠陥を提示:あなたは条件if len(sys.argv) > 1を使用しますが、それだけでsys.argvは長さ2の少なくともそのためであることを示しています、それはあなたが安全にsys.argv[0](第一にアクセスすることができます要素)とsys.argv[1](2番目の要素)があると仮定することはできませんsys.argv[2]が存在します。

関連する問題