检查空参数 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
我的程序中有两个参数问题,第一个问题是,如果没有参数传递给程序,我会尝试打印错误,而且我正在尝试使用 - 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