Перенаправить ввод из файла, но также показывать в stdout?

Ваши два SSD зеркалированы с помощью md (linux software raid) драйвера, так что если один из них выйдет из строя, у вас все равно останутся ваши данные. Вы можете переформатировать диски и получить 500 Гб дискового пространства (если ваш провайдер разрешит и поможет), но вам (1) придется делать резервные копии, если вы не хотите потерять данные, и (2) вы навсегда потеряете безопасность зеркалирования.

Лично я считаю это положительной чертой вашего хостинг-провайдера, а не проблемой, особенно если он отслеживает состояние дисков и заменяет вышедшие из строя члены рейда до того, как вы столкнетесь с потерей данных. Проверьте соглашение о хостинге для получения подробной информации.

2
19.01.2017, 18:52
1 ответ

Вы можете использовать скрипт expect для передачи заданного входного файла в заданный скрипт python:

ian.expect:

set script [lindex $argv 0]
set input  [lindex $argv 1]
set inputfh [open $input r]
spawn -noecho python $script
while {[gets $inputfh line] != -1} {
  expect {
    -re "(.+)" {
        send "$line\n"
    }
  }
}
close $inputfh
interact

ian.py:

name = input("Enter your name: ")
print("Hello", name)

input.txt:

"Jeff"

Чтобы выполнить любой заданный скрипт python с заданным входным файлом, запустите:

expect -f ian.expect ian.py input.txt

и вы получите:

$ expect -f ian.expect ian.py input.txt
Enter your name: "Jeff"
('Hello', 'Jeff')

Я не хакер TCL или Expect. , поэтому я был бы рад улучшения сценария.

Пример файла и скрипта с двумя входами:

input.txt:

"Jeff"
14

ian.py:

name = input("Enter your name: ")
print("Hello", name)
age = input("Your age? ")
print("So, you are already " + str(age) + " years old, " + name + "!")

пример выполнения:

$ expect -f ian.expect ian.py input.txt
Enter your name: "Jeff"
('Hello', 'Jeff')
Your age? 14
So, you are already 14 years old, Jeff!
0
27.01.2020, 22:42

Теги

Похожие вопросы