我试图将一个参数传递给我的脚本,但出于某种原因,如果我为我的时间值指定 -t,它在脚本中显示为空字符串。如果我指定 --time,我会得到正确的值。为什么?
import sys, getopt, time
def main(argv):
inputfile = ''
outputfile = ''
sleeptime = 6
if len(sys.argv) == 1:
print("No arguments supplied")
print('Usage: test.py -i <inputfile> -o <outputfile> -t <1-24>')
sys.exit()
try:
opts, arg = getopt.getopt(argv, "i:o:t", ["ifile=", "ofile=", "time="])
except getopt.GetoptError:
print('Incorrect options.')
print('Usage: test.py -i <inputfile> -o <outputfile> -t <1-24>')
sys.exit()
for opt, arg in opts:
if opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
elif opt in ("-t", "--time"):
print("time = ", arg)
sleeptime = int(arg)
else:
print("Unknown arg")
sys.exit()
print(sleeptime)
if __name__ == "__main__":
main(sys.argv[1:])
我几乎从这里撕下了代码:https://www.tutorialspoint.com/python/python_command_line_arguments.htm
请您参考如下方法:
为了回答您的问题,我认为您忘记了 t 选项的结尾冒号(因为 t 需要一个参数),请尝试将其更改为 "i :o:t:",参见 https://docs.python.org/3/library/getopt.html#getopt.getopt .
整行应该是这样的:
opts, arg = getopt.getopt(argv, "i:o:t:", ["ifile=", "ofile=", "time="])
但总的来说我同意上面的评论,我建议使用 https://docs.python.org/3/library/argparse.html用于命令行参数解析:).
