我有一个Python程序,该程序接受三个命令行参数-f(file1)-n(file2)-o(file3)。
程序的结构如下:
ffile=''
nfile=''
ofile=''
try:
myopts, args = getopt.getopt(sys.argv[1:],"f:n:o:h:")
for x,y in myopts:
if x == '-f':
ffile=y
elif x == '-n':
nfile=y
elif x == '-o':
ofile=y
<do something here with the files>
except:
sys.stderr("err.txt",w)
sys.exit(2)
我想做的是:
但是,err.txt文件为空。我不确定发生了什么。我已经看到许多将stderr写入文件的问题,但是似乎无法回答我的问题。
答案 0 :(得分:1)
如果您愿意改变自己的方法,我建议您不要尝试重新发明轮子,而是检查一些现有的python库来实现此功能。
有一个名为argparse 的库,可以很好地解析命令行参数并返回适当的错误消息,也许您会发现它很有用。
import argparse
p = argparse.ArgumentParser(description='My Program', formatter_class=argparse.ArgumentDefaultsHelpFormatter)
p.add_argument("-f", type=str, help="-f file", required=True)
p.add_argument("-n", type=str, help="-n file", required=True)
p.add_argument("-o", type=str, help="-o file", default=None)
args = p.parse_args() # will throw error if required -f and -n args not passed
在错误记录方面,您可以尝试使用python logging库。可将该库配置为将信息记录到stdout,文本文件等,并且可能足够灵活以满足您的要求。