将脚本中的任何错误打印到文件std

2024-10-01 19:21:01 发布

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

我有一个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)

我想做的是:

  1. 如果缺少任何参数(-f,-n),则打印相应的错误。
    1. 将错误消息(不管是什么)打印到文件“err.txt”中

但是,err.txt文件为空。我不知道发生了什么事。我见过许多问题,其中stderr被写入文件,但它似乎并没有回答我的问题


Tags: 文件命令行程序txt参数错误stderrsys
1条回答
网友
1楼 · 发布于 2024-10-01 19:21:01

如果您愿意改变您的方法,我建议您不要尝试重新发明轮子,而是查看一些现有的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库。此库可以配置为将信息记录到标准输出、文本文件等,并且可能足够灵活,可以满足您的要求

相关问题 更多 >

    热门问题