gpt4 book ai didi

python - Gradle Exec 任务和流程输出

转载 作者:太空狗 更新时间:2023-10-30 02:03:58 26 4
gpt4 key购买 nike

我有一个 python 脚本,它打印一些字符串并在控制台中更新它的执行进度:

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 这样的控制台运行它时,一切正常,我可以看到输出和进度条。我需要将此脚本作为 Gradle 构建的一部分运行,因此,我创建了一个任务:

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:有时它会以某种方式打印乱码:enter image description here

最佳答案

我通过刷新 python 脚本中的系统输出解决了这个问题。这不是理想的解决方案,但可以完成工作。

所以我的 python 脚本中有以下内容

import sys
import time

def flush_out(string):
print(string)
sys.stdout.flush()

#script does something
flush_out("Waiting for 10 seconds...")
time.sleep(10)
flush_out("Exiting")
sys.exit(0)

关于python - Gradle Exec 任务和流程输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25981036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com