Python 2.7 QApplication(sys.argv)在python中给出的索引超出了sys.argv[1]的范围

Python 2.7 QApplication(sys.argv)在python中给出的索引超出了sys.argv[1]的范围,python-2.7,python-3.x,pyside,Python 2.7,Python 3.x,Pyside,我有一个python代码,它以文件名作为输入,解析报告中的数据,并在GUI窗口中给出输出。当我试图解析报告时,我得到的索引超出了范围错误。我知道错误是由于sys.argv[1]参数引起的。但我无法找出sys.argv[1]无法存储文件名的原因 我已经卸载了所有python模块,并且卸载了抛出错误的解析器 我还从环境变量和注册表中删除了python路径,然后重新安装了python和我的解析器软件 我还从用户\%Username%\Appdata中删除了数据 在重新安装(python2.7.3和我的

我有一个python代码,它以文件名作为输入,解析报告中的数据,并在GUI窗口中给出输出。当我试图解析报告时,我得到的索引超出了范围错误。我知道错误是由于sys.argv[1]参数引起的。但我无法找出sys.argv[1]无法存储文件名的原因

我已经卸载了所有python模块,并且卸载了抛出错误的解析器

我还从环境变量和注册表中删除了python路径,然后重新安装了python和我的解析器软件

我还从用户\%Username%\Appdata中删除了数据

在重新安装(python2.7.3和我的第三方软件)之后,我还对注册表项HKEY\U CLASSES\U ROOT\Applications\python26.exe\shell\open\command进行了更改 C:>ftype Python26.File=“C:\Python26\python.exe”“%1”%* 甚至我也在环境变量下添加了python路径

这在其他机器上运行良好,在我的机器上也运行良好,直到我从我的机器上卸载Python3.xx(我同时拥有3.xx和2.7.3)的那天

我在文件名=文件路径[0]中出错 我无法理解如果sys.arg[1]不存在,那么它应该在这一行中抛出错误。但它如何将字符串存储在文件路径中,因为列表大小只有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_())

正如@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)
如果len(sys.argv)<4:#需要文件名和至少2个参数
打印“至少包含两个参数,然后重试。”
系统出口(1)

如果sys.argv的长度为1,sys.argv[1:]不会抛出错误,它只会返回一个空列表。