在3个文本文件之间写正数和负数

时间:2019-04-08 23:30:38

标签: python python-3.x

名为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()

2 个答案:

答案 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()