![](/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.