我有一个python代码,它以文件名作为输入,解析报表中的数据并在GUI窗口中输出。当我试图解析报告时,我得到索引超出范围错误。我知道错误是因为sys.argv [1]参数。但我无法弄清楚为什么sys.argv [1]无法存储文件名。
我已经卸载了所有的python模块,并且我已经卸载了抛出错误的解析器。
我还从环境变量和注册表中删除了python路径,然后重新安装了python和我的解析器软件。
我还删除了USERS \%Username%\ Appdata
中的数据重新安装(python2.7.3和我的第三方软件)之后,我还在注册表项 HKEY_CLASSES_ROOT \ Applications \ python26.exe \ shell \ open \ command 中进行了更改 C:> ftype Python26.File =" C:\ Python26 \ python.exe" "%1" %* 甚至我已经在环境变量下添加了python路径。
这在其他机器上工作正常,并且它在我的机器上工作正常,直到我从我的机器上卸载python 3.xx(我同时拥有3.xx和2.7.3)的那一天。
我在 file_name = file_path [0] 这一行收到错误 我无法理解sys.arg [1]是否不存在然后它应该在 file_path = sys.argv [1:] 这一行中抛出错误。但它如何能够将字符串存储在 file_path 中,因为列表大小只有1。
有人可以帮我解决这个问题。提前致谢。
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
file_path = sys.argv[1:]
open_window = TelematicsFileViewer()
open_window.show()
file_name = file_path[0]
path = file_path[1]
open_window.parsed_file_out(file_name, path)
sys.exit(app.exec_())
答案 0 :(得分:0)
正如@flyingmeatball所说它会返回空列表[],然后在引用空列表的第一个元素时会导致错误。
因此,可以在脚本中添加尽可能高的检查,以使用错误代码1退出,以阻止脚本的其余部分运行。
if len(sys.argv) < 4: # require file name and at least 2 args
print 'Include at least two arguments and retry.'
sys.exit(1)