我有一個Python腳本,它打印一些字符串和更新,它在控制檯執行進度:搖籃Exec的任務和過程輸出
if __name__ == '__main__':
...
print 'Hello, world!'
while page <= pages:
...
done = float(page)/pages
sys.stdout.write('\r[{0:50s}] {1:.2f}%'.format('#' * int(done * 50), done * 100))
page += 1
print ''
當我從控制檯運行它像python script.py
一切正常,我可以看到輸出和進度條。我需要運行該腳本搖籃建設的一部分,所以,我創建了一個任務:
task process(type: Exec) {
workingDir file('src/main/python')
commandLine 'python', 'process.py', ...
}
現在,當我使用gradle process
執行腳本我看到控制檯無輸出,最後一行印刷是> Building 0% > :process
我試圖用Java 7的ProcessBuilder
沒有運氣太:
task process << {
def processBuilder = new ProcessBuilder([
'python',
'process.py',
...
]).directory(file('src/main/python'))
.redirectInput(ProcessBuilder.Redirect.INHERIT)
.redirectOutput(ProcessBuilder.Redirect.INHERIT)
.redirectError(ProcessBuilder.Redirect.INHERIT).start().waitFor()
}
我卡住了。我真的想在同一個控制檯中看到python的輸出。我怎樣才能實現它?
UPD:有時它在某種程度上打印亂碼:
你是男人! – madhead 2015-01-28 14:56:53