我正在尝试使用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
我不明白我的代码有什么问题。
答案 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
函数时,fp
和fn
都已定义,其中包含fp = …
和{{}等语句1}} 强>
除此之外,您的代码提出了一个主要缺陷:您使用条件fn = …
但它只是告诉您if len(sys.argv) > 1
至少是长度2.因此,它允许您安全访问{ {1}}(第一个元素)和sys.argv
(第二个元素),但您不能假设sys.argv[0]
存在。