让我们说,我有一个python脚本(test.py),它包含一个带字符串并打印回来的函数,如下所示
def pri(str):
print str
如何从命令行调用此函数(pri
)?
我试过了:
$python test.py pri(blablalba)
但是我收到以下错误: 缺少字符串的结尾
答案 0 :(得分:3)
你可以像任何命令行程序一样调用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)
答案 1 :(得分:2)
您可以这样调用它(假设您的函数保存在名为test.py
的文件中)
python -c "from test import pri; pri('test')"
这将输出单词test
如果您的文件的名称不是test.py
,请在导入语句中替换单词test
>python -c "from test import pri; pri('test')"
test
答案 2 :(得分:0)
import sys
print (sys.argv[1])
您需要使用sys.argv[1]
如果将其保存在脚本中,请调用pri.py
从命令行使用python
pri.py
hello
,它将输出hello
要打印多个单词:
import sys
def pri(s):
print s
if __name__=="__main__":
s = " ".join(sys.argv[1:])
pri(s)
答案 3 :(得分:0)
您应该使用sys.argv
。 argv是通过命令行传递的所有参数的列表。
试试这个:
import sys
def pri(s):
print s
pri(sys.argv[1])
您可以执行python test.py blablabla
答案 4 :(得分:0)
我会坚持你使用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
。