简体   繁体   English

从命令行获取字符串参数?

[英]Take string argument from command line?

I need to take an optional argument when running my Python script:运行我的 Python 脚本时,我需要使用一个可选参数:

python3 myprogram.py afile.json

or或者

python3 myprogram.py

This is what I've been trying:这就是我一直在尝试的:

filename = 0
parser = argparse.ArgumentParser(description='Create Configuration')
parser.add_argument('filename', type=str,
                   help='optional filename')

if filename is not 0:
    json_data = open(filename).read()
else:
    json_data = open('defaultFile.json').read()

I was hoping to have the filename stored in my variable called "filename" if it was provided.如果提供了文件名,我希望将文件名存储在名为“文件名”的变量中。 Obviously this isn't working.显然这是行不通的。 Any advice?有什么建议吗?

Please read the tutorial carefully. 请仔细阅读教程。 http://docs.python.org/howto/argparse.html http://docs.python.org/howto/argparse.html

i believe you need to actually parse the arguments: 我相信你需要实际解析这些论点:

parser = argparse.ArgumentParser()
args = parser.parse_args()

then filename will be come available args.filename 然后文件名将出现args.filename

Check sys.argv . 检查sys.argv It gives a list with the name of the script and any command line arguments. 它给出了一个列表,其中包含脚本名称和任何命令行参数。

Example script: 示例脚本:

import sys
print sys.argv

Calling it: 打电话给:

> python script.py foobar baz
['script.py', 'foobar', 'baz']

If you are looking for the first parameter sys.argv[1] does the trick. 如果你正在寻找第一个参数sys.argv[1]就可以了。 More info here . 更多信息在这里

Try argparse's default parameter, its well documented.尝试 argparse 的默认参数,它有据可查。

import argparse

parser = argparse.ArgumentParser(description='Create Configuration')
parser.add_argument('--file-name', type=str, help='optional filename', 
       default="defaultFile.json")

args = parser.parse_args()

print(args.file_name)

Output: Output:

$ python open.py --file-name option1
option1

$ python open.py 
defaultFile.json

Alternative library :替代图书馆

click library for arg parsing.点击arg 解析库。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM