有没有办法将两个命令及其输出都写入外部文件?
假设我有一个脚本outtest.py:
import random
from statistics import median, mean
d = [random.random()**2 for _ in range(1000)]
d_mean = round(mean(d), 2)
print(f'mean: {d_mean}')
d_median = round(median(d), 2)
print(f'median: {d_median}')
现在,如果我只想捕获其输出,我知道我可以做到:
python3 outtest.py > outtest.txt
但是,这只会给我一个outtest.txt文件,例如:
mean: 0.34
median: 0.27
我正在寻找的是一种获取输出文件的方式,例如:
import random
from statistics import median, mean
d = [random.random()**2 for _ in range(1000)]
d_mean = round(mean(d), 2)
print(f'mean: {d_mean}')
>> mean: 0.34
d_median = round(median(d), 2)
print(f'median: {d_median}')
>> median: 0.27
或其他某种格式(降价,等等)。本质上,类似于jupyter笔记本或Rmarkdown,但使用标准的[[.py文件。
有没有简单的方法可以做到这一点?这里是示例
import random
from statistics import median, mean
d = [random.random()**2 for _ in range(1000)]
d_mean = round(mean(d), 2)
foo = f'mean: {d_mean}'
print(foo)
d_median = round(median(d), 2)
bar = f'median: {d_median}'
print(bar)
# save to file
with open("outtest.txt", "a+") as file:
file.write(foo + "\n")
file.write(bar + "\n")
file.close()
参数“ a +”表示打开文件并将内容附加到文件,而不是如果文件存在则覆盖。
from sys import argv
from subprocess import run, PIPE
script = argv[1]
r = run('python ' + script, stdout=PIPE)
out = r.stdout.decode().split('\n')
with open(script, 'r') as f:
lines = f.readlines()
with open('out.txt', 'w') as f:
i = 0
for line in lines:
f.write(line)
if 'print' in line:
f.write('>>> ' + out[i])
i += 1
和输出:
import random from statistics import median, mean d = [random.random()**2 for _ in range(1000)] d_mean = round(mean(d), 2) print(f'mean: {d_mean}') >>> mean: 0.33 d_median = round(median(d), 2) print(f'median: {d_median}') >>> median: 0.24