Python:打开excel文件时出现错误

时间:2017-08-22 12:52:37

标签: python

我正在尝试使用Python打开并阅读Excel文件,其代码如下:

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')

不幸的是,我收到以下错误:

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

我不明白我的代码有什么问题。

1 个答案:

答案 0 :(得分: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 = …和{{}等语句1}}

除此之外,您的代码提出了一个主要缺陷:您使用条件fn = …但它只是告诉您if len(sys.argv) > 1至少是长度2.因此,它允许您安全访问{ {1}}(第一个元素)和sys.argv(第二个元素),但您不能假设sys.argv[0]存在。