- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以得到下面的check_call
过程:
logPath="log.txt"
with open(logPath,"w") as log:
subprocess.check_call(command, stdout = log, stderr=subprocess.STDOUT )
将 stdout
和 stderr
输出到文件连续?
在我的机器上,只有在 subprocess.check_call 完成
后,输出才会写入文件。
要实现这一点,也许我们可以修改log
文件流的缓冲区长度?
最佳答案
并非没有一些操作系统技巧。
发生这种情况是因为当输出是终端时,输出通常是行缓冲(即在换行符之后,缓冲区是 flushed ),但它是 block 缓冲 当输出是文件或管道时,因此在 block 缓冲情况下,您不会看到“连续”写入输出,而是每隔 1k 或 4k 或任何 block 大小写入一次.
这是 libc 的默认行为,因此如果子进程是用 C 编写的并使用 printf()
/fprintf()
,它将检查输出是否正确是终端还是文件,相应地改变缓冲模式。
缓冲的概念在 http://www.gnu.org/software/libc/manual/html_node/Buffering-Concepts.html 中有(更好的)解释
这样做是出于性能原因(参见 the answer to this question)。
如果您可以修改子进程的代码,则可以在每行之后或需要时调用 flush()
。
否则有外部工具强制行缓冲模式(通过欺骗程序相信输出是一个终端):
可能相关:
unbuffer
)stdbuf
)grep
)关于Python:有 check_call 输出到文件连续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31319969/
亲们, 我正在尝试从此代码调用可执行文件,但由于某种原因它无法正常工作,(python 2.6) subprocess.check_call( ['fpm', '-s', 'dir', '-t',
是否可以得到下面的check_call过程: logPath="log.txt" with open(logPath,"w") as log: subprocess.check_ca
我想用 subprocess.check_call(cmd) 与 stdin argument .到目前为止,我发现的大多数教程都建议直接使用 Popen(例如 here ),但如果 cmd 出错,我
我尝试使用 subprocess 使用 'wc -l' 命令打印行数。它输出文件是空的,而它不是。 import os import subprocess import tempfile import
我试图在 python 脚本中使用 subprocess.ckeck_call 一次性运行多个命令,但不起作用。 >>> subprocess.check_call("testdriver ssh s
在运行 shell 脚本时,如何在 python 的子进程调用中传递多个参数? import subprocess subprocess.check_call('./test_bash.sh '+ar
这个问题在这里已经有了答案: How to redirect output with subprocess in Python? (6 个答案) 关闭 5 年前。 我正在尝试从这个命令中获取输出:“
我有如下命令 subprocess.check_call(["C:\\Program Files\\operation.exe", "execute", "-af", "createrecord.xm
我有一个 python 脚本,它使用 subprocess.check_call 启动 Wine(Linux 上的 Windows 模拟器),然后 wine 启动 Z:\\Program Files
我将 subprocess.check_call 与 rsync 结合使用。 我需要为 rsync 使用来自包含多个空格分隔值的字符串的参数,但是因为字符串是单个对象,它在 subprocess.ch
我的 python 程序正在使用 check_call 调用 Windows 上的脚本: import subprocess subprocess.check_call(['my_script.bat
我怎样才能让 subprocess.check_call 给我一个命令的原始二进制输出,它似乎在某处编码不正确。 详细信息: 我有一个返回如下文本的命令: some output text “quot
我在 Ubuntu 12 上使用 Python 2.7 运行这些片段。 import subprocess args = ['rsync', '--rsh="ssh"', '/tmp/a/', '12
我的 python 脚本(python 3.4.3)通过子进程调用 bash 脚本: import subprocess as sp res = sp.check_output("bashscript
我正在尝试使用 subprocess.check_call 通过 Python 运行 Rscript。 Rscript 非常简单,它只是检查 Rpackage 是否存在,如果不存在则安装它。 loca
我有一个路径“D:\Torres\Gas_Entrapment\new_calculations\command_script_load\Es_cteS_cte\w_load”,其中存储了 9(九)个
我想调用一个子进程来备份mysql数据库。在终端中运行良好的命令行(并创建了一个名为 mydatabase.sql 的文件)是: mysqldump -uroot -ppassword --a
我在使用 python subprocess.check_call() 函数时遇到了一个非常奇怪的错误。这里有两个测试应该都因权限问题而失败,但第一个只返回“用法”(“意外行为”): # Test #
N = 50000 with open('input', 'w') as f: for i in range(N): f.write(str(i) + '\n') run_co
我在调用 shell 脚本时遇到以下错误,如何使用 check_call 或通过任何其他 python 函数调用 shellscript? 导入操作系统 从子进程导入 check_call,Popen
我是一名优秀的程序员,十分优秀!