当前位置:  开发笔记 > 编程语言 > 正文

用户输入和命令行参数

如何解决《用户输入和命令行参数》经验,为你挑选了10个好方法。

我如何拥有a)可以接受用户输入的Python脚本以及如何使用b)如果从命令行运行,则读入参数?



1> Antti Rasine..:

要读取用户输入,您可以尝试使用该cmd模块轻松创建一个迷你命令行解释器(带有帮助文本和自动完成)和raw_input(input用于Python 3+)从用户读取一行文本.

text = raw_input("prompt")  # Python 2
text = input("prompt")  # Python 3

命令行输入在sys.argv.在你的脚本中尝试这个:

import sys
print (sys.argv)

解析命令行选项有两个模块:( optparse自Python 2.7起不推荐使用,argparse代替使用)和getopt.如果您只想将文件输入脚本,请注意其功能fileinput.

在Python库参考是你的朋友.


`raw_input`在Python 3.x中被重命名为`input` - [这里的文档](http://docs.python.org/py3k/whatsnew/3.0.html#builtins)

2> lbz..:
var = raw_input("Please enter something: ")
print "you entered", var

或者对于Python 3:

var = input("Please enter something: ")
print("You entered: " + var)


应该注意的是,你不必导入`raw_input`,它是一个内置函数.
您不必在打印串联中使用str(),因为默认情况下所有输入的数据都是str(ing)类型(偶数).

3> steampowered..:

raw_input在Python 3.x中不再可用.但是raw_input重命名了input,所以存在相同的功能.

input_var = input("Enter something: ")
print ("you entered " + input_var) 

变更的文件


在Python 2.7中,input()不会将值转换为字符串.因此,如果您尝试这样做:input_variable1 = input("输入第一个单词或短语:"),您将收到一个错误:Traceback(最近一次调用last):return eval(raw_input(prompt))File" ",第1行, NameError:name'bad'未定义

4> Dave Webb..:

处理命令行参数的最佳方法是argparse模块.

使用raw_input()来获取用户输入.如果您导入readline module您的用户将具有行编辑和历史记录.


argparse是新的optparse

5> Vhaerun..:

小心不要使用该input功能,除非你知道你在做什么.不同raw_input,input将接受任何python表达式,所以它有点像eval



6> Viswesn..:

这个简单的程序可以帮助您了解如何从命令行提供用户输入,并显示有关传递无效参数的帮助.

import argparse
import sys

try:
     parser = argparse.ArgumentParser()
     parser.add_argument("square", help="display a square of a given number",
                type=int)
    args = parser.parse_args()

    #print the square of user input from cmd line.
    print args.square**2

    #print all the sys argument passed from cmd line including the program name.
    print sys.argv

    #print the second argument passed from cmd line; Note it starts from ZERO
    print sys.argv[1]
except:
    e = sys.exc_info()[0]
    print e

1)找到5的平方根

C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5

2)传递除数字以外的无效参数

C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'



7> Simon Pevere..:

使用'raw_input'从控制台/终端输入.

如果你只是想要一个命令行参数,比如文件名或类似的东西

$ python my_prog.py file_name.txt

那么你可以使用sys.argv ...

import sys
print sys.argv

sys.argv是一个列表,其中0是程序名,因此在上面的例子中,sys.argv [1]将是"file_name.txt"

如果要使用完整的命令行选项,请使用optparse模块.

PEV



8> Matt Olan..:

如果您运行的是Python <2.7,则需要optparse,正如文档所解释的那样,它将创建一个接口,用于运行应用程序时调用的命令行参数.

但是,在Python≥2.7中,optparse已被弃用,并被替换为argparse,如上所示.来自文档的快速示例......

以下代码是一个Python程序,它获取整数列表并生成总和或最大值:

import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')

args = parser.parse_args()
print args.accumulate(args.integers)



9> GreenMatt..:

截至Python 3.22.7,现在有argparse用于处理命令行参数.



10> CorpseDead..:

如果它是3.x版本,那么只需使用:

variantname = input()

例如,您要输入8:

x = input()
8

x将等于8但它将是一个字符串,除非你另外定义它.

所以你可以使用convert命令,如:

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有