关于python:命令行输入(参数)

Command-line Input (parameters)

本问题已经有最佳答案,请猛点这里访问。

我对命令行输入的工作方式非常困惑,因此在实践中,我试图将下面的程序取下来并生成相同的信息,但仅仅通过使用命令行输入,唯一的问题是我不知道从哪里开始

1
2
3
4
5
6
7
8
9
10
11
12
13
def main():
    x = (input("Give me a boolean:").lower() == 'true')
    y = str(input("Give me a string:"))
    z = int(input("Give me a number:"))
    if x == True:
        print (y)
        print (""",y,""",sep="")
    else:
        print (z*2)



main()


见http://docs.python.org/2/library/sys.html中sys.argv的说明。

1
2
3
4
import sys
x = sys.argv[1].lower() == 'true'
y = sys.argv[2]
z = int(sys.argv[3])

…或者,要以正确的方式进行操作,请使用argparse:http://docs.python.org/dev/library/argparse.html


我同意查尔斯使用argparse。我只是想补充一下,你的主要方法应该是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
def start(var):
    # ... your program start...

def parser():
    # use argparse here
    # ...
    return var

if __name__ =="__main__":
    var = parser()
    start(var)
    # ...

你可以从这个问题的答案中看出原因。


为了发现没有阅读文档的情况下事情是如何工作的,交互式解释器是最好的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> input("something:")
something: true
Traceback (most recent call last):
  File"<input>", line 1, in <module>
  File"<string>", line 1, in <module>
NameError: name 'true' is not defined
>>> input("something:")
something: True
True
>>> input("something:")
something: 12
12
>>> input("something:")
something: 12.4
12.4
>>> type(input("something:"))
something: 14.3
<type 'float'>
>>> type(input("something:"))
something: 14
<type 'int'>

你看,它评估用户写的是什么样的python值。