echo "test1.txt" "test2.txt" | test.py
不會實際運行test.py
,你需要使用這個命令:
echo "test1.txt" "test2.txt" | python test.py
然而,對於越來越參數到蟒蛇另一種方法是:
import sys
for arg in sys.argv:
print line
,當像這樣運行:
python test.py "test1" "test2"
產生以下輸出:
test.py
test1
test2
的argv
第一個參數是該程序的名稱。這可以被忽略:
import sys
for arg in sys.argv[1:]:
print line
你似乎有被你假設Python是打開你交給它在循環中的文本文件的另一個問題 - 這是不正確的。如果你在循環中打印,你會看到它只是打印你最初給它的字符串。
如果你真的想打開並解析文件,做這樣的事情在循環:
import sys
args = sys.stdin.readlines()[0].replace("\"","").split()
for arg in args:
arg = arg.strip()
with open(arg, "r") as f:
for line in f:
line = line.strip()
words = line.split()
的原因,我們有一個奇怪的第一行是stdin
是一個流,所以我們必須要讀它通過readlines()
。
結果是隻有一個元素的列表(因爲我們只給它一條線),因此德[0]
然後我們需要取出內引號,因爲引號是不是真的需要時管道,這也將起作用:
echo test1.txt test2.txt | python test.py
最後,我們必須將字符串拆分爲實際的文件名。
你是否期待它被空間分割? –
你是什麼意思,它不起作用,你得到了什麼,你期望什麼? – AChampion
test.py是否期望文件名或文件內容?在後一種情況下,您應該使用'cat',而不是'echo'。 – DyZ