名为data.txt的文件包含未知数量的行,每行包含一个整数。编写一些代码,创建两个文件dataplus.txt和dataminus.txt,并将所有具有正整数的data1.txt行复制到dataplus.txt,将所有具有负整数的data1.txt行复制到dataminus.txt 。零不会复制到任何地方。
这是我到目前为止的代码。它会遇到执行错误,并且不会在文本文件中写入任何内容。
minus = open('dataminus.txt', 'a')
plus = open('dataplus.txt', 'a')
source = open('data.txt', 'r')
sor = source.readline()
while sor != '':
x = int(sor)
if (x > 0):
plus.write(x)
elif (x < 0):
minus.write(x)
sor = source.readline()
source.close()
minus.close()
plus.close()
答案 0 :(得分:1)
正如某人在评论中已经说过的那样,您只需要将x转换回str,这就是运行时错误必须说的内容(TypeError: write() argument must be str, not int
minus = open('dataminus.txt', 'a')
plus = open('dataplus.txt', 'a')
source = open('data.txt', 'r')
sor = source.readline()
while sor != '':
x = int(sor)
if (x > 0):
plus.write(str(x)+'\n')
elif (x < 0):
minus.write(str(x)+'\n')
sor = source.readline()
source.close()
minus.close()
plus.close()
您会注意到的另一个问题是需要在每个数字后添加换行符。
答案 1 :(得分:0)
我知道了。必须将其转换为字符串并将每个数字写入新行:
minus = open('dataminus.txt', 'a')
plus = open('dataplus.txt', 'a')
source = open('data.txt', 'r')
sor = source.readline()
while sor != '':
x = int(sor)
if (x > 0):
plus.write(str(x)+'\n')
elif (x < 0):
minus.write(str(x)+'\n')
sor = source.readline()
source.close()
minus.close()
plus.close()