繁体   English   中英

如何调用python函数并从命令行给出其参数?

[英]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.

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