0

这个脚本是基于另一个任务的。我的代码看起来和他们的一样,并且都出现语法错误。我正在运行 ActiveState Active Python 2.7 64 位

def showEvents():
    ''' showEvents command

    List events from event logger with the following options:
    -t or -type (type of event to search for)
        warning (default option)
        error 
        information
        all
    -g or -goback (time in hours to search)
        integer
        default is 100 hours

    >>>showEvents -t warning -g 100
    type =  warning
    goBack = 100 hours
    '''
    import optparse

    parser = optparse.OptionParser()
    parser.add_option('-t', '--type', \
                        choices=('error', 'warning', 'information', 'all' ), \
                        help='write type to eventType', 
                        default = 'warning')
    parser.add_option('-g', '--goback', \
                        help='write goback to goback',
                        default = '100')
    (options, args) = parser.parse_args()
    return options

options = showEvents()

print 'type = ', options.type
print 'goBack =', options.goback, 'hours'

if options.type == 'all':
if options.goback == '24':
    import os
    os.startfile('logfile.htm')

这将在运行时返回默认值,但不会接受输入。我错过了什么?

>>> type =  warning
goBack = 100 hours
>>> showEvents -t error
Traceback (  File "<interactive input>", line 1
    showEvents -t error
                  ^
SyntaxError: invalid syntax
>>> 

感谢您的关注。

4

1 回答 1

2

问题不在于您的代码,而在于您尝试测试它的方式。

showEvents -t error不是 Python 的有效行,但它shor的有效行cmd

因此,您不必将其输入到 Python 解释器中,而是将其输入到终端/DOS 窗口中的 bash/DOS 提示符中。

此外,如果您不在 Windows 上,则必须将脚本保存为showEvents(而不是showEvents.py),并且必须将其安装在您的某个位置PATH,并且必须设置可执行标志,并且需要一个#!/usr/bin/env python或类似的第一行。(或者您可以跳过所有这些并python showEvents.py -t error在 bash 提示符下键入。)

在 Windows 上,您可以调用它showEvents.py;只要你cd'd'到同一个目录,它就会自动保存在你的PATH; 并且无需担心可执行标志或 shebang 行。

于 2013-05-22T00:34:08.733 回答