Python检查空参数

2024-10-01 15:28:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在程序中遇到了两个问题,第一个问题是,如果没有参数传递给程序,我试图打印一个错误,而且我试图用-n代替,它代表“无参数”,实际上不需要传递任何参数来将文件加载到程序中,我希望它像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()

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

^{pr2}$

Tags: thetoin程序for参数ifsys
2条回答

当已经有非常好的参数解析时,你不应该自己做参数解析(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

用法:

^{pr2}$

下面是有关如何添加更多功能的详细信息,如help页或生成required|optional字段。https://docs.python.org/2/library/argparse.html

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

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

相关问题 更多 >

    热门问题