![](/img/trans.png)
[英]How can I give parameters to a function of a python script through the command-line?
[英]how to call a python function and give its parameters from the command line?
假设我有一个python脚本(test.py),它包含一个接受字符串并打印回去的函数,如下所示
def pri(str):
print str
我如何从命令行调用此函数( pri
)? 我试过了:
$python test.py pri(blablalba)
但我收到以下错误:缺少字符串结尾
您将像任何命令行程序一样调用python程序:
python test.py blablabla
然后在程序内部,您将执行以下操作:
import sys
print sys.argv
sys的argv变量是通过命令行传递到所调用程序的所有参数的列表。 因此,如果您想调用特定的参数编号,则可以将其视为列表。 如果您想让一个方法打印出这些参数,则需要将它们传递给该方法,或者让该方法使用该变量。 在您的情况下,您需要这样的东西:
import sys
def pri(str):
print str
for each in sys.argv[1:]:
pri(each)
您可以这样称呼它(假设您的函数保存在名为test.py
的文件中)
python -c "from test import pri; pri('test')"
这将输出单词test
如果文件的名称不是test.py
,则在导入语句中用单词test
代替
>python -c "from test import pri; pri('test')"
test
import sys
print (sys.argv[1])
您需要使用sys.argv[1]
如果将其保存在脚本中,请调用pri.py
pri.py
使用python
pri.py
hello
,它将输出hello
要打印多个单词:
import sys
def pri(s):
print s
if __name__=="__main__":
s = " ".join(sys.argv[1:])
pri(s)
您应该使用sys.argv
。 argv是通过命令行传递的所有参数的列表。
尝试这个:
import sys
def pri(s):
print s
pri(sys.argv[1])
您可以通过python test.py blablabla
来运行它
我会坚持要求您使用if __name__ == '__main__'
构造。 它允许您的模块仍然可导入并可以从命令行使用。
对于您的用例,它就像
import sys
def pri(s):
# you stuff
# other stuff
if __name__ == '__main__':
# test presence of params and display comprehensive errors if not applicable
# ...
pri(sys.argv[1])
这样python test.py blabla
调用pri('blabla')
但是您可以在另一个python模块中执行import test
,而无需自动调用pri
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.