所以我有这个程序。基本上我得到7个坐标,然后我发回了1个坐标。 (无法解释)
from sys import stdin ,stdout
test=int(stdin.readline().strip("\n")) #It got stripped the new line
for z in range(test):
c=stdin.readline().strip("\n").split(" ")# Here also!
x=[0,0,0,0,0,0,0,0]
y=[0,0,0,0,0,0,0,0]
letter="abcdefgh"
for k in range(7):
x[letter.index(c[k][0])]=1
y[int(c[k][1])-1]=1
stdout.write(letter[x.index(0)]+str(y.index(0)+1)+"\n") #This is the main bits
这就是事情。
此程序响应被另一个程序捕获并写入文件中。当我使用stdout.write(+"\n")
或print
时,我的程序会输出类似
h4
g2
h4
...
但是当我只使用普通stdout.write()
h4g2h4...
如何使我的程序输出如下:
h4
g2
h5
...
记录我的程序的程序使用:
result=open("txt.txt","w")
process=subprocess.Popen([sys.executable,"work.py"], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
res=process.communicate(a)
result.write(res[0])
据我所知,print
增加1行,而不是2行。那就是我迷路的地方。
我的输入确实有新的行,但它被剥离了,你可以在第2行看到。
答案 0 :(得分:1)
因此,由于您正在写一个文件,我可以根据我对python的了解来回答这个问题。如果我错了,请纠正我,但这是我的回答:
stdout.writelines([letters[x.index(0)]+str(y.index(0)+1)])
由于你的x值发生了变化,因此无法正常工作。
您可以像这样使用.format:
stdout.write('{} \n'.format(letters[x.index(0)]+str(y.index(0)+1)))
但是,如果你无法做到这一点,那么你可能就是如何格式化stdout.write()......
科林