如何检查fileinput是否为空?蟒蛇

时间:2014-07-24 09:48:02

标签: python file-io

我创建了一个从命令行运行的Python程序,用户输入文件进行处理。从fileinput读取文件,可以在它们上使用optparse选项。我的问题是,如果用户没有输入任何选项或文件名,程序什么也不做,继续运行。如果fileinput为空,我希望程序默认显示帮助选项。

有没有办法检查fileinput.input(argv)是否为空?它defaults to stdin when empty,但我如何预先检查它是否为空?

def parse_options():
    parser = optparse.OptionParser()
    parser.add_option('-o', '--output', dest='output',
                      default='c',
                      help='[c/f/h] output to (c)onsole, (f)ile or (h)tml')
    parser.add_option('-s', '--sort', dest='sort',
                      default='pa',
                      help='[p/c/m/d] sort by (p)ath, (c)all frequency, (m)ean duration or (d)uration,\n'
                           '[a/d] sort by (a)scending or (d)escending order')

    options, argv = parser.parse_args()

    if options.output == 'f':
        output_action = LogAnalyser.output_to_file
    elif options.output == 'h':
        output_action = LogAnalyser.output_to_html
    else:
        output_action = LogAnalyser.output_to_console

    #if fileinput.input(argv) is None:
    #    parser.print_help()
    #    quit()

    return output_action, options.sort, fileinput.input(argv)

1 个答案:

答案 0 :(得分:1)

好吧,如果optparse解析器返回位置参数列表,您只需检查它是否空虚:

(options, args) = parser.parse_args()
...
if args:
    for line in fileinput.input(args):
        ...

如果这还不够,请详细说明您的问题。