相关疑难解决方法(0)

将stdout重定向到Python中的文件?

如何将stdout重定向到Python中的任意文件?

当从ssh会话中启动长时间运行的Python脚本(例如,Web应用程序)并进行后台处理,并且ssh会话关闭时,应用程序将引发IOError并在尝试写入stdout时失败.我需要找到一种方法来将应用程序和模块输出到文件而不是stdout,以防止由于IOError导致的失败.目前,我使用nohup将输出重定向到一个文件,这就完成了工作,但是我想知道是否有办法在不使用nohup的情况下完成它,出于好奇.

我已经尝试了sys.stdout = open('somefile', 'w'),但这似乎并没有阻止一些外部模块仍然输出到终端(或者sys.stdout = ...线路根本没有发射).我知道它应该使用我测试过的简单脚本,但我还没有时间在Web应用程序上进行测试.

python stdout

285
推荐指数
8
解决办法
43万
查看次数

Python - 在将stdout重定向到文件之后将其重置为正常

在我的python程序开始时,我有以下行:

sys.stdout = open('stdout_file', 'w')
Run Code Online (Sandbox Code Playgroud)

在我的程序中途,我想将stdout设置回正常的标准输出.我该怎么做呢?

python stdout

20
推荐指数
3
解决办法
1万
查看次数

重新连接远程Jupyter Notebook并获取当前单元格输出

我目前正在使用jupyter笔记本在远程服务器上训练神经网络.我用以下内容进行了设置:

  • TMUX
  • jupyter-notebook --no-browser --port = 5000
  • 使用浏览器连接到jupyter笔记本并执行训练单元(我在前10分钟观看时输出正常)
  • 分离tmux(ctrl-b,d)并关闭浏览器选项卡

现在,当我在浏览器中重新连接到jupyter笔记本时,我看不到训练单元的当前输出,只看到我在观看前10分钟训练时看到的输出.

我试图为此找到一个解决方案,我认为,对于这个问题存在一些git问题,但它们已经过时了,我无法弄清楚这个问题是否已经解决.

编辑//让我的意图更加清晰,因为我发现stackoverflow上的一些线程正在解决这个问题:我不想等待训练完成,因为我可能想要在它完成之前杀死训练,当它绝对我不希望它会走的路.因此,某种"实时"输出或至少是常规输出会很好.

jupyter-notebook

14
推荐指数
3
解决办法
1018
查看次数

sys.stdout没有重新分配给sys .__ stdout__

我是Python的新手,所以我还在学习语言.我遇到的一件事是重新分配sys.stdout来更改print的默认输出.所以我把它写成了一个测试:

import sys
sys.stdout = open('log.txt','a')
print('hey')
sys.stdout.close()
sys.stdout = sys.__stdout__
print('hi')
Run Code Online (Sandbox Code Playgroud)

'嘿'被写入文件,但'hi'无处可见.但是,这可以按预期工作,并且'hey'被写入文件,'hi'被打印到控制台输出:

import sys
sys.__stdout__ = sys.stdout
sys.stdout = open(r'C:\Users\Vincent\Documents\Python\log.txt','a')
print('hey')
sys.stdout.close()
sys.stdout = sys.__stdout__
print('hi')
Run Code Online (Sandbox Code Playgroud)

简而言之,这是一个并不重要的小问题,我只是想知道是否有一个明显的原因导致它不按预期的方式工作.我在Windows 7家庭高级版上使用IDLE和pyscripter在v3.2.3和我的便携式python v3.2.1上尝试过这个.

python python-3.x

7
推荐指数
2
解决办法
2530
查看次数

标签 统计

python ×3

stdout ×2

jupyter-notebook ×1

python-3.x ×1