我正在处理旧代码oldCode.py基本上它会打印一些数据,比如项目1,2和3的销售。
print' 1 500' print' 2 842' 打印' 3 734'
我想提取这些数据以便进一步处理。我知道我可以阻止python将这些信息打印到屏幕上,并通过编写将信息写入某个文件output.dat
python oldCode.py >> output.dat
但是,首先,如果首先没有在脚本中定义,我怎么能从output.dat中提取要处理的数据?我必须将处理步骤的结果写入相同的输出文件。如果没有重写整个代码(最终选项),我将如何做到这一点?
答案 0 :(得分:1)
这有点像黑客攻击,但您可以通过在代码中添加类似内容来将stdout重定向到文件。
import sys
# This sets the normal system print output to a variable
# in case you need to restore it later in the script.
normal_stdout = sys.stdout
# This redirects the print output to a file.
sys.stdout = open('output.dat','w')
#do stuff
# And to change it back for new code, in case you actually want to print
sys.stdout = normal_stdout
请记住,打印到控制台的任何内容(包括Tracebacks)都将打印到文件中。您可以打开此文件并轻松阅读内部信息。
最佳做法是做两件事之一:
1)如果要添加旧代码,可以通过分配变量或附加到字典或类似对象来修改它,您可以在其他地方进行进一步处理,或者与打印语句一起使用。
2)如果您的代码引用了其他代码,请将其导入代码顶部
import oldCode.py
并修改旧代码以返回而不是打印。要做到这一点,你可能必须对上面1)中描述的那些进行类似的更改,以便你有一些东西可以返回。要知道最佳路线,我们必须看到您的旧代码,或至少是一个精简版本。