Я пытаюсь вызвать сценарий оболочки (сегмент.ш) в Python.
Синтаксис, который дает правильные результаты на консоли:
> ./segment.sh ctb file.txt utf-8 0
Как видно, этот сценарий оболочки ожидает текстовый файл в качестве входных данных. Я пытаюсь открыть файл и прочитать его содержимое на python (позже желательно из формы HTML POST) и каким-то образом передать переменную, содержащую содержимое, в подпроцесс python.
звоните.
Следующая функция не работает. Но если я просто предоставлю имя файла, например:
Popen(["/bin/bash", "./segment.sh", "ctb", "file.txt", "utf-8", "0"])`
тогда это будет работать, но я хочу передать входные данные из переменной. Не могли бы вы дать мне несколько советов?
def pySegment(text):
op = subprocess.Popen(["/bin/bash", "./segment.sh", "ctb", "utf-8", "0"],
stdout = subprocess.PIPE,
stdin = subprocess.PIPE,
stderr = subprocess.STDOUT,
)
results = op.communicate(input=text)[0]
return results
if __name__ == "__main__":
filename = "./file.txt"
text = open(filename).read()
result = pySegment(text)
print result