我的子代码代码:
def GO():
my_sub=subprocess.Popen(['exe file','files in folder'],stderr=STADOUT,stdout=PIPE)\
.communicate()[0]
my_sub=my_sub.splitlines()
for lines in my_sub:
GO.a= lines
print GO.a
在印刷GO.a a中有:
1
2
3
4
在保存按钮中:
def save():
type = [('file', '*.txt')]
name = filedialog.asksaveasfile(type=ftypes, mode='w', defaultextension=".xxx")
name.write(GO.a)
name.close()
在保存的文件中我有:
1
所以只有第一行,而不是所有行
如何保存全部或def GO()
的所有输出?
编辑:(评论后):
def GO():
my_sub=subprocess.check_output(['exe file','files in folder'],stderr=STADOUT)
output=my_sub.splitlines()
for lines in output:
GO.a= lines
print GO.a
在保存按钮输出中,我只收到一行(最后一行4
)
print GO.a
效果很好,也许我在保存按钮部分有一些不好的东西?
答案 0 :(得分:0)
尝试
def GO():
my_sub=subprocess.Popen(['exe file','files in folder'],stderr=STADOUT,stdout=PIPE)\
.communicate()[0]
lines = my_sub.splitlines()
GO.a = my_sub
for line in lines:
print line
答案 1 :(得分:0)
将所有行分配到同一个变量就是这样,大部分时间都是这样。
Popen
对您目前的需求来说太过分了。当您想以更复杂的方式与子流程交互时,它非常有用。
要将输出+错误流合并在一起,请使用check_output
代替更简单的&更短的代码。此函数将GO.a
设置为输出分割线:
def GO():
output = subprocess.check_output(['exe file','files in folder'], stderr=subprocess.STDOUT)
GO.a = output.splitlines()
如果您使用的是python 3并且需要文本,请使用
GO.a = output.decode().splitlines()
代替