获取原始输入作为选项?

1 投票
2 回答
2517 浏览
提问于 2025-04-17 07:56

我对Python还比较陌生,主要用它来轻松移动文件。最近我一直在用raw_input来获取一个名字,然后把它当作目录名的变量。不过我看到getopt这个东西,觉得如果能把raw_input提示用户输入的那个变量当作一个选项来处理,会省时省力。但是我找不到任何具体的例子来实现我想做的事情。

与其等着它提示我输入,不如直接输入meego.py shortname=example,让它自动处理。这种做法简单吗?

这是我目前的代码:

var = raw_input("Shortname=")

print 'starting: ' + str(var)

svn_app = svn_root + "/" + var    


shutil.copyfile(riproot + '/images/ApplicationIcon.png',
            svn_app + '/images/ApplicationIcon.png') 

print 'done: ' + str(var)

2 个回答

2

与其使用getopt,不如试试optionParser,这个更先进一些。

from optparse import OptionParser

if __name__ == __main__:
    parser = OptionParser()
    parser.add_option("-f", "--file", dest="filename",
                      help="write report to FILE", metavar="FILE")
    (optionss, args) = parser.parse_args()

    if options.filename:
        move_file(options.filename)

这个模块还自带了对-h,也就是--help的支持。你只需要试试输入yourscript.py -h就可以了。

3

如果你使用的是Python 2.7或更高版本,可以直接使用argparse模块(这个模块是Python自带的)。

如果你的Python版本在2.3到2.7之间,可以安装argparse模块

因为Python的未来会越来越多地使用argparse模块,所以建议你使用这个模块,而不是一些旧的模块(比如optparse或getopt)。


import argparse

parser=argparse.ArgumentParser()
parser.add_argument('--shortname')
args=parser.parse_args()

print 'starting: ' + str(args.shortname)

可以这样使用:

% prog.py --shortname example
starting: example

撰写回答