在这里的相关问题和答案中,有人假设emacs(23.2)中的python-shell是块缓冲而不是行缓冲.建议修复是将sys.stdout.flush()添加到我的脚本中的位置,我希望stdio将其内容刷新到python-shell.
有没有办法欺骗python-shell(在Windows上的emacs 23.2中运行,而不是在Linux上运行)a)认为它附加到TTY或b)使用行缓冲而不是块缓冲模式?我不明白为什么我能在IDLE中执行此操作但不能在emacs中执行此操作.
我宁愿自定义emacs而不是在我的脚本中添加sys.stdout.flush().叫我懒惰:-).
谢谢,
麦克风
我在覆盆子Pi中运行python代码.代码应该永远持续下去.然而,几个小时后它崩溃了.由于它在远程计算机上运行,因此无法在崩溃期间看到它给出的消息.
如何将此消息存储在文件中,以便我可以看到问题是什么?这是在linux中自动完成的吗?或者我应该写一些函数来在崩溃期间导出错误.我怎样才能做到这一点?
我有一个用于仿真的python脚本,一个for循环要花很长时间,每个循环要花不同的时间,因此我.在每个循环后打印一个,以监视它运行的速度和经过的时间。for脚本运行时的声明。
for something:
do something
print '.',
Run Code Online (Sandbox Code Playgroud)
但是,当我在终端中的iPython中运行脚本时,点并不会一一打印,而是在循环结束时一次打印所有点,这使整个过程变得毫无意义。如何在运行时内联打印点?
此代码按预期工作.输出:
Loading
Loading.
Loading..
Loading...
Run Code Online (Sandbox Code Playgroud)
码:
done = False
count = 0
while not done:
print '{0}\r'.format("Loading"),
time.sleep(0.25)
print '{0}\r'.format("Loading."),
time.sleep(0.25)
print '{0}\r'.format("Loading.."),
time.sleep(0.25)
print '{0}\r'.format("Loading..."),
time.sleep(0.25)
count += 1
if count == 5:
done = True
Run Code Online (Sandbox Code Playgroud)
而这段代码没有.输出:
Loading.
Loading...
Run Code Online (Sandbox Code Playgroud)
码:
done = False
count = 0
while not done:
print '{0}\r'.format("Loading"),
time.sleep(0.125)
print '{0}\r'.format("Loading."),
time.sleep(0.125)
print '{0}\r'.format("Loading.."),
time.sleep(0.125)
print '{0}\r'.format("Loading..."),
time.sleep(0.125)
count += 1
if count == 5:
done = True
Run Code Online (Sandbox Code Playgroud)
为什么时间函数似乎跳过每一个print语句,如果它低于0.25?
我想从django视图开始处理一些文件,我希望能够在处理时将文件名发送到浏览器.有没有办法(轻松)这样做?我可以使用线程和ajax调用来做到这一点,但我现在想要最简单的解决方案.
我一直在尝试编写一个基本的终端仿真脚本,因为出于某种原因我的mac上没有终端访问权限.但是要在搅拌机中编写游戏引擎脚本,控制台通常在你开始使用的终端中打开,这是至关重要的.
只是做一些简单的事情,比如删除,重命名等等.我曾经使用stream = os.popen(command)然后执行命令print (stream.read()).这适用于大多数事情,但不适用于任何互动.
不久我发现了一种新的方式:
sp = subprocess.Popen(["/bin/bash", "-i"], stdout = subprocess.PIPE, stdin = subprocess.PIPE, stderr = subprocess.PIPE)然后print(sp.communicate(command.encode())).这应该会产生一个我可以像终端一样使用的交互式shell,不管它吗?
但无论哪种方式,我都无法保持连接打开,并使用最后一个例子,我可以调用sp.communicate一次,给我以下输出(在这种情况下为'ls /')和一些错误:
(b'Applications\n[...]usr\nvar\n', b'bash: no job control in this shell\nbash-3.2$ ls /\nbash-3.2$ exit\n').第二次它给了我一个ValueError: I/O operation on closed file.
有时(比如'ls')我只得到这个错误:b'ls\nbash-3.2$ exit\n'.
那是什么意思?如何使用python模拟终端,允许我控制交互式shell或运行blender并与控制台通信?
目前,当我
from __future__ import print_function
从Python 2.7.6开始,我显然在添加flush关键字参数之前得到了print()版本,根据文档在Python 3.3中进行了操作.我的系统(Ubuntu)中安装的Python3是Python 3.4,我验证了它的print()函数有flush参数.
如何print()从3.4 导入功能?从哪里__future__获得较旧的打印功能?
在cPython(默认的Python实现)中,线程切换的频率是多少?这不是关于使用多核的问题; 我知道GIL,并意识到只有一个线程会在时间运行.
我已经看到一些情况,我按顺序有两条日志消息,第一条日志消息将被发出,但第二条消息不会被发出几秒钟.这可能是因为Python决定在两个日志语句之间切换线程.这让我相信Python每隔几秒就会在线程之间切换一次,这比我预期的要慢得多.它是否正确?
我写了一个 python 程序及其 Dockerfile:
import time
print("Begin")
time.sleep(100);
print("End")
Run Code Online (Sandbox Code Playgroud)
创建了它的图像,并使用它运行docker run <image-id>,令我惊讶的行为是,在控制台中发出运行命令后,它等待 sleep(100) 秒并一起打印"Begin"和"End"。
为什么我们在运行时得不到中间结果?
另外,如果它不会在生成后立即发送数据,我该如何以这种方式编写流应用程序(在卡夫卡等中)?
我不仅是python的新手,而是完全编程所以我非常感谢你的帮助!
我试图使用Tweepy过滤来自twitter流API的所有推文.
我已按用户ID进行过滤,并确认正在实时收集推文.
然而,似乎只有第二张最后一条推文是实时收集而不是最新的推文.
你们能帮忙吗?
import tweepy
import webbrowser
import time
import sys
consumer_key = 'xyz'
consumer_secret = 'zyx'
## Getting access key and secret
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth_url = auth.get_authorization_url()
print 'From your browser, please click AUTHORIZE APP and then copy the unique PIN: '
webbrowser.open(auth_url)
verifier = raw_input('PIN: ').strip()
auth.get_access_token(verifier)
access_key = auth.access_token.key
access_secret = auth.access_token.secret
## Authorizing account privileges
auth.set_access_token(access_key, access_secret)
## Get the local time
localtime = time.asctime( time.localtime(time.time()) )
## Status …Run Code Online (Sandbox Code Playgroud)