Мне было интересно, можно ли было перенаправить ввод и вывод скрипта python в файл, чтобы они были чересстрочными.По сути, скажите, что у меня есть следующий код:
x = 1
print("hello, world")
print(x)
x = 2
print(x)
def myfun(Val):
return(Val+1)
myfun(7)
Я бы хотел, чтобы в выходном файле было отображено следующее:
x = 1
print("hello, world")
"hello, world"
print(x)
1
x = 2
print(x)
2
def myfun(Val):
return(Val+1)
myfun(7)
8
Вот что я уже рассмотрел:
простое перенаправление файлов python myfile.py > output.log
однако это не захватывает ввод
Модуль трассировки python -m trace myfile.py
однако это также отображает путь слишком далекомного информации и раздувает время выполнения.Я не смог найти никакого очевидного способа ограничить это только кодом верхнего уровня (не каждый модуль и вызов функции)
ноутбуки Jupyter - я ценю, что они ясно отображают ввод и вывод, однакоЯ действительно хочу сохранить это для исполняемых скриптов командной строки с базовыми файлами ascii python.
В идеале я надеялся найти какой-нибудь bash wizardry с переадресацией, опцию командной строки python или общий модуль python, который способен это обрабатывать, но пока нетудача :(
РЕДАКТИРОВАТЬ: В качестве дополнительного поясняющего примера, по сути, я пытаюсь воссоздать следующую функциональность из R. Скажем, у нас есть программа R myprog.R
как:
myfun <- function(x){
x + 1
}
y <- myfun(7)
print("hello,world!")
print(y)
y + 1
Затем при запуске из командной строки R CMD BATCH myprog.R
создается файл myprog.Rout
, который выглядит как
myfun <- function(x){
x + 1
}
y <- myfun(7)
print("hello,world!")
[1] "hello,world!"
print(y)
[1] 8
y + 1
[1] 9