Я вижу две подзадачи в вашем вопросе, поэтому я попытаюсь ответить на них в логическом порядке.
Во-первых, вы хотите считывать и записывать файлы в python, используя операторы <
и >
в командной строке.Это должно быть просто;оболочка будет обрабатывать трубопровод, поэтому все, о чем вам нужно беспокоиться, это вход / выход.Давайте назовем это my_script.py
:
if __name__ == "__main__":
import sys;
x = sys.stdin.read() # read stdin
print(x) # write to stdout. You could also use sys.stdout.write()
Во-вторых, вы хотите вызвать скрипт Python, но вам нужно использовать ./script
, чтобы сделать это из соображений совместимости.Если это так, вы можете написать действительно простой сценарий оболочки, чтобы просто вызывать скрипт python, вызывать его так, как ему нужно, и заранее использовать chmod для установки разрешений, чтобы он мог выполнятьсякаким процессом это нужно.Давайте просто назовем этот файл codeName
.Для этого потребуется всего одна строка:
python my_script.py
, а затем, если вы выполните следующее:
$ ./codeName < fileToRead.in > fileToWrite.out
каналы для stdin и stdout все равно будут работать для самого скрипта.Он будет выполнять сценарий codeName
, который, в свою очередь, будет запускать команду python my_script.py
, которая будет запускать код Python, который будет читать из stdin и записывать в stdout, , который был передан по каналу и в fileToRead.in
иfileToWrite.out
соответственно .
РЕДАКТИРОВАТЬ: На самом деле, @BenjaminW.делает хорошее замечание в своем комментарии.Вы можете пропустить дополнительный файл сценария оболочки и просто переименовать myscript.py
в codeName
и дать ему правильные разрешения.Вам просто нужно добавить следующую строку вверху:
#!/usr/bin/env python
, которая должна запускать файл, используя исполняемый файл python.Возможно, вам придется изменить путь, чтобы сослаться на фактическую папку, в которой находится python на вашем компьютере.