gpt4 book ai didi

python - 程序完成后如何将控制台打印到文本文件(Python)?

转载 作者:太空狗 更新时间:2023-10-30 01:06:13 24 4
gpt4 key购买 nike

我有一个程序,通过打印语句将许多计算和结果输出到控制台。我想编写一些代码来将控制台的所有内容导出(或保存)到一个简单的文本文件中。

我搜索了 StackOverflow 和其他网站,但我找到了一些方法来重定向打印语句以直接打印到文件,但我希望程序正常工作,将输出显示到控制台,然后在所有操作后保存其内容完成的程序。

如果重要的话,我正在使用 PyCharm 和 Python2.7

最佳答案

好的,所以通常要完成它,你必须重写 python print 内置函数。但是...有 ipython,它提供了一些钩子(Hook)。

首先你需要安装ipython:

#bash
sudo pip install ipython

(我正在使用 sudo 来简单定位然后我需要到达的文件夹,进一步阅读)

安装 ipython 后,您将拥有可用的 ipython 扩展文件夹,所以访问它:

#bash
cd ~/.ipython/extensions/

然后在那里创建一个名为 print_to_file.py 的文件,这是它的内容:

#python
class PrintWatcher(object):
def __init__(self, ip):
self.shell = ip

def post_execute(self):
with open('/home/turkus/shell.txt', 'a+') as f:
in_len = len(self.shell.user_ns['In'])
i = in_len - 1

in_ = self.shell.user_ns['In'][i]
out = self.shell.user_ns['Out'].get(i, '')
# you can edit this line if you want different input in shell.txt
f.write('{}\n{}\n'.format(in_, out))


def load_ipython_extension(ip):
pw = PrintWatcher(ip)
ip.events.register('post_run_cell', pw.post_execute)

保存文件后运行:

#bash
ipython profile create

# you will get something like that:
[ProfileCreate] Generating default config file: u'/home/turkus/.ipython/profile_default/ipython_config.py'

现在回到设置我们的钩子(Hook)。我们必须打开在上述路径下创建的 ipython_config.py 并在其中添加一些魔法(那里有很多东西,所以请转到文件末尾):

# some commented lines here
c = get_config()
c.InteractiveShellApp.extensions = [
'print_to_file'
]

保存后,您可以运行ipython 并编写您的代码。您的每个输入都将写入您在上面提供的路径下的文件中,在我的例子中是:

/home/turkus/shell.txt

注意事项

您可以避免每次 ipython 启动时加载您的扩展,只需从 c.InteractiveShellApp.extensions 列表中删除 'print_to_file' ipython_config.py。但请记住,您可以随时加载它,只需在 ipython 控制台中输入:

➜  ~ ipython
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
Type "copyright", "credits" or "license" for more information.

IPython 4.0.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.

In [1]: %load_ext print_to_file

在使用 %reload_ext print_to_file 命令后,print_to_file.py 中的任何更改都会反射(reflect)在打开的 ipython shell 中,因此您不必退出并启动它再次。

关于python - 程序完成后如何将控制台打印到文本文件(Python)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39143417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com