簡體   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