У меня следующая ситуация:Как правильно обрабатывать входной аргумент скрипта python при использовании параллели?
Мой скрипт (скажем, script.py) принимает аргумент в качестве ввода. У меня есть .txt-файл с последовательностью возможных входов (каждый вход представляет собой строку, представляющую идентификатор).
в сценарии я что-то вроде этого
#!/usr/bin/python
import sys
def doStuff(ID):
ID = str(ID)
path = ID + "/posts?"
print "\n\n\t"+path
foo = ID + "hello"
print foo
print ID+"hello"
sys.exit(0)
inputID =sys.argv[1]
print "Input ID\t-\t" + str(inputID)
doStuff(inputID)
если я запускаю код с
python script.py 123456789
я правильно получить
Input ID - 123456789
123456789/posts?
123456789hello
123456789hello
, но если я что-то вроде
cat IDs.txt | parallel python script.py {}
я
Input ID - 123456789
/posts? 123456789
hello6789
hello6789
, что здесь происходит? когда я конкатенация строк заказ вернулся, причем в двух последних печатает inputID переписываются «привет»
Посмотрите в модуль FileInput, это позволяет принимать данные из водопроводного Stdout линий: https://docs.python.org/ 2/library/fileinput.html –
Кажется полезным, если я должен прочитать файл внутри скрипта python IPT. В моем случае вместо ввода сценария python просто строка. – user2614596