检查空参数 Python

Check for empty argument Python

我的程序中有两个参数问题,第一个问题是,如果没有参数传递给程序,我会尝试打印错误,而且我正在尝试使用 - n 代表 'no argument' 实际上不必传递任何参数来将文件加载到程序中,我希望它只是 运行 就像 python3 program.py file file2 file3 而不是使用 python3 -n file file2 file3 等..如果参数只是要退出的程序文件[0]

,我已经注释掉了我试图检查参数的内容
def main():

    script = sys.argv[0]
    action = sys.argv[1]
    noargfile = sys.argv[1:]
    filenames = sys.argv[2:]
    OutContent = filenames or noargfile

    #Load files with arguments -d & --default
    print("Loading Files....", sys.argv[1:])

    for arg in filenames:
        try:
            myfile = open(arg, "r")
            fileContent = myfile.readlines()
            myfile.close()
            OutContent = OutContent + fileContent

            #if len(sys.argv) == script:
                #print("No Argument")
                #sys.exit(0)

            if action == '--default':
                counter = 0 # set a counter to 0 
                for line in OutContent: #for each line in load if the " 200 " is found add 1 to the counter and repeat until done. 
                    if re.findall(r"\s\b200\b\s", line):
                        counter += 1
                print("\nTotal of (Status Code) 200 request:", counter)
            elif action == '-d':
                counter = 0 # set a counter to 0 
                for line in OutContent: #for each line in load if the " 200 " is found add 1 to the counter and repeat until done. 
                    if re.findall(r"\s\b200\b\s", line):
                        counter += 1
                print("\nTotal of (Status Code) 200 request:", counter)
            elif action == '-n':
                menu(arg, OutContent)
        except OSError:
           print("File could not be opened " + filenames)

if __name__ == "__main__":
    main()

我得到一个索引超出范围的错误,我不明白为什么

File "program.py", line 161, in main
    action = sys.argv[1]
IndexError: list index out of range

将此添加到函数 main 的第一行:

if len(sys.argv)==1: sys.exit("error here")

当已经有非常好的参数解析时,你不应该自己解析参数(pypy 上可能有 100 个)

这个小例子使用了 argparse 模块。它需要 n 个文件并将其作为字符串列表存储在变量 files

import argparse

parser = argparse.ArgumentParser(description='Load some files')
parser.add_argument('-f','--files', dest='files', nargs='+', help='<Required> Set flag', required=True)


args = parser.parse_args()
print args.files

用法:

python myscript -f test1.txt test2.txt test3.txt

这里有更多关于如何添加更多功能的详细信息,例如 help 页面或创建 required|optional 字段。 https://docs.python.org/2/library/argparse.html