我已经找到了python代码失败的原因,但我是偶然发现的。因此,我在这里问你,如果你是我,你将如何调试程序。下面,我将讲述我的程序中的错误,提供错误代码,以及我如何调试并发现代码中隐藏的问题。
该代码是一个python代码,其中包含node.js子进程。当子流程运行时,python将打印它提供的所有内容。如果有“正确选择”字符串,它将打印“nice”。问题是“很好”,从来没有打印过。
a、 js
num = 98
async function f(){
// Check condition
for(var i = 0; i < 10;i++){
await sleep(4000);
if (num < 100) {
console.log("Enter number greater then 100");
num++;
}
else {
console.error("correct choice");
}
}
}
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
f();
b、 派克
import subprocess, sys
process = subprocess.Popen(['node', 'A.js'], bufsize=0, stdout=subprocess.PIPE, stdin=subprocess.PIPE, universal_newlines=True)
for line in iter(process.stdout.readline, ''):
print(line)
sys.stdout.flush()
if line.startswith("correct choice"):
print("NICE.")
else:
continue # skip it
我是如何找到答案的:我尝试了线程化,然后将所有读到的内容都附加到列表中。然后,我发现“正确的选择”不在列表中,而是奇怪地打印出来。然后,完全通过猜测,我发现问题在于subprocess.popen()中缺少“stderr=subprocess.stdout”。
再一次,您将如何调试上面的代码,并修复丢失的“nice”?当你回答这个问题时,试着忘记我提到的解决方案和调试过程。
暂无答案!
目前还没有任何答案,快来回答吧!