Python 试着把方块打穿?

Python 试着把方块打穿?,python,Python,也许这是我的一个基本问题,我不明白为什么下面的代码在所有情况下都执行,除了块: import pandas as pd import sys import os try: if sys.argv[1] == '-d': for i in range(1,len(sys.argv[:])): arg = sys.argv[i] print(i,arg) sys.exit(0) except: print (&

也许这是我的一个基本问题,我不明白为什么下面的代码在所有情况下都执行
,除了
块:

import pandas as pd
import sys
import os

try:
    if sys.argv[1] == '-d':
        for i in range(1,len(sys.argv[:])):
            arg = sys.argv[i]
            print(i,arg)
    sys.exit(0)
except:
    print ("Syntax: python mergeTXT2XL.py working-dir output-name txt-file1 txt-file2 ...")
    sys.exit(-1)
当我使用args运行此命令时:

python合并txt2xl.py-d1234
我明白了:

1-d
2 1
3 2
4 3
5 4
语法:python mergeTXT2XL.py工作目录输出名称txt-file1 txt-file2。。。

语法行不应打印。它看起来像是直通/直通。

通过引发异常在内部工作。您的
块将捕获它。这就是为什么当你想要一个非特定的包罗万象时,除了异常之外,你应该总是做
,因为在
异常中
不包括
系统异常
以及一些您通常不想捕获的异常。

您有时应该像这样打印异常
异常,但异常为e:
下一行
打印(e)
因为这样您就可以知道执行exception Block的原因,实际上打印出的异常是
列表索引超出范围
,这可能是一个额外的问题,但OP总是会遇到
系统退出
问题,不管发生什么…@matiss我不知道如何在这里得到
索引器。OP使用循环在sys.argv上迭代(虽然不是惯用的方式)。获得它的唯一方法是执行代码时完全不带任何参数(这不是OP的情况),这就是
除了异常作为e:
printed之外的情况out@Matiiss因为执行脚本时根本没有参数,所以
sys.argv[1]
不存在。这不是OP正在做的。