我有一个命令行工具(实际上是几个),我正在用Python编写包装器.
该工具通常使用如下:
$ path_to_tool -option1 -option2 > file_out
Run Code Online (Sandbox Code Playgroud)
用户将输出写入file_out,并且还能够在工具运行时查看该工具的各种状态消息.
我想复制此行为,同时还将stderr(状态消息)记录到文件中.
我有的是这个:
from subprocess import call
call(['path_to_tool','-option1','option2'], stdout = file_out, stderr = log_file)
Run Code Online (Sandbox Code Playgroud)
除了stderr没有写入屏幕之外,这工作正常.我当然可以添加代码来将log_file的内容打印到屏幕上,但是用户将在完成所有操作后看到它,而不是在它发生时.
总结一下,期望的行为是:
我有一种感觉,我要么错过了一些非常简单的东西,要么这比我想象的要复杂得多......感谢您的帮助!
编辑:这只需要在Linux上工作.
这个问题在这里以类似的方式提出,但答案是我的头脑(我是python和web开发的新手),所以我希望有一个更简单的方法或者可以用不同的方式解释.
我正在尝试使用matplotlib生成一个图像并在没有先将文件写入服务器的情况下提供它.我的代码可能有点傻,但它是这样的:
import cgi
import matplotlib.pyplot as pyplot
import cStringIO #I think I will need this but not sure how to use
...a bunch of matplotlib stuff happens....
pyplot.savefig('test.png')
print "Content-type: text/html\n"
print """<html><body>
...a bunch of text and html here...
<img src="test.png"></img>
...more text and html...
</body></html>
"""
Run Code Online (Sandbox Code Playgroud)
我认为不是做pyplot.savefig('test.png'),而是应该创建一个cstringIO对象,然后执行以下操作:
mybuffer=cStringIO.StringIO()
pyplot.savefig(mybuffer, format="png")
Run Code Online (Sandbox Code Playgroud)
但我很失落.我见过的所有例子(例如http://lost-theory.org/python/dynamicimg.html)都涉及到类似的事情.
print "Content-type: image/png\n"
Run Code Online (Sandbox Code Playgroud)
我不知道如何将它与我已经输出的HTML集成.
我有一个包含一堆字符串的文件,例如"size = XXX;".我想,第一次Python的re模块和我有点通过以下行为迷惑:如果我使用的管道"或"正则表达式,我只看到了比赛的那一点回来.例如:
>>> myfile = open('testfile.txt','r').read()
>>> print re.findall('size=50;',myfile)
['size=50;', 'size=50;', 'size=50;', 'size=50;']
>>> print re.findall('size=51;',myfile)
['size=51;', 'size=51;', 'size=51;']
>>> print re.findall('size=(50|51);',myfile)
['51', '51', '51', '50', '50', '50', '50']
>>> print re.findall(r'size=(50|51);',myfile)
['51', '51', '51', '50', '50', '50', '50']
Run Code Online (Sandbox Code Playgroud)
比赛的"size ="部分消失了.(但肯定会在搜索中使用,否则会有更多结果).我究竟做错了什么?
如何更好地比较两个文件的某些行(以"@"开头的行)的以下方法?我确信这可以在一行上完成,而不会让尴尬的临时文件.我对Linux很陌生,所以对我很轻松!提前致谢.
grep "^@" myfile1 > temp1
grep "^@" myfile2 > temp2
diff temp1 temp2
Run Code Online (Sandbox Code Playgroud) 假设我有几个整数列表,如下所示:
[0,3,4]
[2,3,4,7]
[2,3,4,6]
Run Code Online (Sandbox Code Playgroud)
什么是最有效/最pythonic方式来构建至少一个列表中但不会出现在所有列表中的所有元素的单个列表?在这种情况下,它会
[0,2,7,6]
Run Code Online (Sandbox Code Playgroud) 使用 Plots.jl 我可以根据两个向量绘制散点图,并由另一个向量设置颜色,如下所示:
using Plots
scatter([1,3,5,7], [2,4,6,10], marker_z = [1,1,2,3])
Run Code Online (Sandbox Code Playgroud)
该系列既有图例,也有颜色条。
如果我设置legend = false两者都被删除:
scatter([1,3,5,7], [2,4,6,10], marker_z = [1,1,2,3], legend = false)
Run Code Online (Sandbox Code Playgroud)
我想删除该系列的图例(框中的“y1”),并保留颜色条。有谁知道这是怎么做到的吗?谢谢。
假设我有一个numpy数组,如:
a = array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[3, 2, 1]])
Run Code Online (Sandbox Code Playgroud)
我想检查第二个元素== 2.
我知道我可以这样做:
>>> a[:,1]==2
array([ True, False, False, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
回归布尔.我的问题是,如何获取条件为真的行的行号?在这个例子中,我想回来,array([0, 3])因为第0和第3行匹配条件第二个元素== 2.
我在R中有一个数据框,其中行代表事件,一列是事件的日期.事件发生的事情由ID列描述.因此,对于每个ID,有多个条目.
如何过滤数据框,以便仅保留每个ID的最新事件?ID是整数,日期在表单中mm/dd/yyyy.
我有一个带有标题的数字数据的文本文件,其中一些数字作为分数输入,一些作为整数输入,一些作为浮点输入,例如:
col1name, col2name, col3name, col4name
1, 2, 3, 4
0.5, 0.6, 0.7, 0.8
1/2, 2/3, 3/4, 4/5
1, 0.2, 3/3, 4
Run Code Online (Sandbox Code Playgroud)
当我使用read.csv时,如何评估这些表达式并将其存储为数字?
谢谢...
如果你在 Sublime 3 中打开一个新的空白文件,输入一行带波浪号的行,并在它后面跟着一个空行,然后转到 View|Syntax 并选择 Markdown,该空行将以红色突出显示,如下所示。这是一个错误还是不应该在 Markdown 中使用波浪号(它们有什么特殊含义吗?)。这也适用于 Rmarkdown 文档(它们可以很好地编织到 PDF,顺便说一句,带有未转义的波浪号)。
python ×5
r ×2
arrays ×1
cgi ×1
csv ×1
date ×1
diff ×1
fractions ×1
grep ×1
julia ×1
matplotlib ×1
numpy ×1
plots.jl ×1
python-2.7 ×1
regex ×1
stderr ×1
sublimetext3 ×1
subprocess ×1