是否可以在Python中暂时重定向stdout/stderr(即在方法的持续时间内)?
当前解决方案(我最初记得但后来忘记了)的问题在于它们没有重定向 ; 相反,他们只是完整地替换了流.因此,如果一个方法有一个本地副本,一个变量的任何原因(例如,由于流被作为参数传递的东西),它不会工作.
有解决方案吗
如何在Python中使用win32 API?
最好和最简单的方法是什么?
你能举一些例子吗?
我正在尝试在python中创建一个非常基本的服务器来监听端口,当客户端尝试连接时创建TCP连接,接收数据,发回一些东西,然后再次监听(并无限期地重复该过程).这是我到目前为止:
from socket import *
serverName = "localhost"
serverPort = 4444
BUFFER_SIZE = 1024
s = socket(AF_INET, SOCK_STREAM)
s.bind((serverName, serverPort))
s.listen(1)
print "Server is ready to receive data..."
while 1:
newConnection, client = s.accept()
msg = newConnection.recv(BUFFER_SIZE)
print msg
newConnection.send("hello world")
newConnection.close()
Run Code Online (Sandbox Code Playgroud)
有时这似乎工作得很好(如果我将浏览器指向"localhost:4444",服务器会打印出HTTP GET请求,并且网页会打印文本"hello world").但是当我在最后几分钟关闭它后尝试启动服务器时,偶尔会收到以下错误消息:
Traceback (most recent call last):
File "path\server.py", line 8, in <module>
s.bind((serverName, serverPort))
File "C:\Python27\lib\socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally …Run Code Online (Sandbox Code Playgroud) 这个问题 - 如何从os.pipe()读取而不被阻止?- 显示如何检查os.pipeLinux 是否有任何数据的解决方案,为此您需要将管道置于非阻塞模式:
import os, fcntl
fcntl.fcntl(thePipe, fcntl.F_SETFL, os.O_NONBLOCK)
Run Code Online (Sandbox Code Playgroud)
在Windows上我们有这个:
ImportError: No module named fcntl
Run Code Online (Sandbox Code Playgroud)
但是os.pipe有:
>>> os.pipe()
(3, 4)
Run Code Online (Sandbox Code Playgroud)
那么,是否可以进行非阻塞读取或窥视os.pipeWindows上的内容?