相关疑难解决方法(0)

支持分块编码的Python HTTP服务器?

我正在寻找一个支持良好的多线程Python HTTP服务器,它支持分块编码回复.(即响应中的"转移编码:分块").为此目的,最好的HTTP服务器基础是什么?

python http chunked-encoding

6
推荐指数
1
解决办法
4868
查看次数

为什么bash有时不会将python程序的输出刷新到文件中

我有一个crontab作业调用python脚本并输出到文件:

python run.py &> current_date.log
Run Code Online (Sandbox Code Playgroud)

现在有时当我这样做

tail -f current_date.log
Run Code Online (Sandbox Code Playgroud)

我看到文件填满了输出,但有时日志文件存在,但长时间保持空白.我敢肯定,python脚本正在打印东东吧它开始运行后,日志文件创建.任何想法为什么它在某些时候保持空虚?

bash file flush

6
推荐指数
2
解决办法
2231
查看次数

Python select()行为很奇怪

我在理解select.select的行为时遇到了一些麻烦.请考虑以下Python程序:

def str_to_hex(s):
    def dig(n):
        if n > 9:
            return chr(65-10+n)
        else:
            return chr(48+n)
    r = ''
    while len(s) > 0:
        c = s[0]
        s = s[1:]
        a = ord(c) / 16
        b = ord(c) % 16
        r = r + dig(a) + dig(b)
    return r

while True:
    ans,_,_ = select.select([sys.stdin],[],[])
    print ans
    s = ans[0].read(1)
    if len(s) == 0: break
    print str_to_hex(s)
Run Code Online (Sandbox Code Playgroud)

我已将其保存到文件"test.py".如果按如下方式调用它:

echo 'hello' | ./test.py
Run Code Online (Sandbox Code Playgroud)

然后我得到了预期的行为:选择never块并打印所有数据; 程序然后终止.

但如果我以交互方式运行程序,我会得到一个最不受欢迎的行为.请考虑以下控制台会话:

$ ./test.py
hello
[<open file '<stdin>', mode 'r' at …
Run Code Online (Sandbox Code Playgroud)

python unix linux io

6
推荐指数
1
解决办法
737
查看次数

Django/Python中是否有类似于PHP flush()的函数,它允许我将部分HTTP响应发送给客户端?

根据雅虎表现提示:

当用户请求页面时,后端服务器可能需要200到500毫秒才能将HTML页面拼接在一起.在此期间,浏览器在等待数据到达时处于空闲状态.在PHP中,您有函数flush().它允许您将部分准备好的HTML响应发送到浏览器,以便浏览器可以在后端忙于HTML页面的其余部分时开始获取组件.

例:

   ... <!-- css, js -->
    </head>
    <?php flush(); ?>
    <body>
      ... <!-- content -->
Run Code Online (Sandbox Code Playgroud)

Django/Python中是否有一个函数;它与PHP相似flush()

谢谢

php python django performance http

6
推荐指数
1
解决办法
774
查看次数

Emacs/Python:在行缓冲与块缓冲模式下运行python-shell

这里的相关问题和答案中,有人假设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().叫我懒惰:-).

谢谢,

麦克风

python emacs output-buffering

5
推荐指数
1
解决办法
1077
查看次数

SGE脚本:在执行期间打印到文件(不仅仅是在结尾)?

我有一个SGE脚本来执行一些python代码,使用qsub提交到队列.在python脚本中,我有一些打印语句(更新程序的进度).当我从命令行运行python脚本时,print语句被发送到stdout.对于sge脚本,我使用-o选项将输出重定向到文件.但是,似乎脚本只会在python脚本运行完毕后将这些文件发送到文件中.这很烦人,因为(a)我不能再看到程序的实时更新和(b)如果我的工作没有正确终止(例如,如果我的工作被踢出队列),则不会打印任何更新.每次我想打印一些东西时,如何确保脚本正在写入文件,而不是在最后将它们全部混合在一起?

python qsub sungridengine

5
推荐指数
2
解决办法
3189
查看次数

为什么`print`内容不能在终端中立即显示?

我有一个用于仿真的python脚本,一个for循环要花很长时间,每个循环要花不同的时间,因此我.在每个循环后打印一个,以监视它运行的速度和经过的时间。for脚本运行时的声明。

for something:
    do something
    print '.',
Run Code Online (Sandbox Code Playgroud)

但是,当我在终端中的iPython中运行脚本时,点并不会一一打印,而是在循环结束时一次打印所有点,这使整个过程变得毫无意义。如何在运行时内联打印点?

python macos terminal ipython

5
推荐指数
1
解决办法
7405
查看次数

为什么time()低于0.25会在Python中跳过动画?

此代码按预期工作.输出:

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?

python time stdout python-2.7

5
推荐指数
1
解决办法
135
查看次数

print(foo, end="") 在终端中不起作用

所以这是一些应该打印文本的代码,类似于 Pokemon 的工作方式。纯粹是为了好玩。

问题是print(x, end="")程序在终端中运行时不起作用,但在使用 IDLE 运行时运行良好。

import time

lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."

for x in lorem:
    print(x, end="")
    time.sleep(0.03)
Run Code Online (Sandbox Code Playgroud)

出于某种原因,如果我在print(x, end="").

for x in lorem:
    print()
    print(x, end="")
    time.sleep(0.03)
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么原因造成的?也许如何解决它?

python printing

5
推荐指数
1
解决办法
1870
查看次数

如何访问python命令行选项(不是args)

调用python程序的命令行类似于:

$ python [python_options] myprogram.py [args]

我知道我可以访问args(sys.argv),但是如何访问python_options?

我不经常使用python_options,但有时它很有用,例如-u(无缓冲输出)或-3(检查python3不兼容性).

确切地说,我想创建一个子进程,这是另一个python程序,我想传递它相同的python_options.(我知道sys.flags,但这不是我想要的.我不想要标志的值;我想要在命令行中使用的实际字符串设置这些标志).

python command line

5
推荐指数
1
解决办法
176
查看次数