[英]Executing python functions with multiple arguments in terminal
我寫了一個 python function 需要多個 arguments 我希望它從終端運行但它不工作。 我究竟做錯了什么?
計數.py 腳本:
def count (a, b):
word = False
a = " " + a + " "
b = " " + b + " "
result = 0
for i in range (len (a)-1):
if a[i] == " " and a[i+1] != " ":
word = True
result += 1
else:
word = False
for i in range (len (b)-1):
if b[i] == " " and b[i+1] != " ":
word = True
result += 1
else:
word = False
return result
if __name__ == "__main__":
count (a, b)
終端命令:
python counting.py count "hello world" "let's check you out"
使用sys
model,添加這段代碼,sys.argv第一個參數就是這個文件名
import sys
if __name__ == "__main__":
a = sys.argv[1]
b = sys.argv[2]
count(a,b)
終端命令: python counting.py "hello word" "let's check you out"
例如:
import sys
def count(s1, s2):
print s1 + s2
print sys.argv
count(sys.argv[1], sys.argv[2])
出去:
python zzzzzzz.py “你好” “單詞”
['zzzzzzz.py', 'hello', 'word']
helloword
a
和b
是count
的 arguments。 您不能在 scope 之外使用它們。您可以改為使用sys.argv
訪問命令行 arguments:
from sys import argv
if __name__ == "__main__":
print(count (argv[1], argv[2]))
正如其他人使用sys
所建議的那樣:
from sys import argv
def count(a, b):
return len(a.split(" ")) + len(b.split(" "))
if __name__ == "__main__":
a = argv[1]
b = argv[2]
word_count = count(a, b)
print(word_count)
或者,您可以使用內置模塊argparse
。 如果您有一個更復雜的腳本,從控制台獲取 arguments。
import argparse
def count(a, b):
return len(a.split(" ")) + len(b.split(" "))
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Word Count")
parser.add_argument("-a", type=str, help="First Sentence")
parser.add_argument("-b", type=str, help="Second Sentence")
args = parser.parse_args()
word_count = count(args.a, args.b)
print(word_count)
使用python counting.py -a "hello world" -b "let's check you out"
執行腳本。
如果您執行python counting.py -h
,您將為用戶提供格式良好的幫助:
usage: counting.py [-h] [-a A] [-b B]
Word Count
optional arguments:
-h, --help show this help message and exit
-a A First Sentence
-b B Second Sentence
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.