Python 如何从文件中删除行并将其移动到另一个文件?

Python 如何从文件中删除行并将其移动到另一个文件?,python,python-3.x,Python,Python 3.x,好的,文件包含: apple,bot,cheese,-999 tea,fire,water,1 water,mountain,care,-999 因此,我想检查文件1中的行是否在结尾处有-999,如果有,请删除该行,并将没有的行传输到新文件中。到目前为止,我的职能是: def clean(filename,cleanfile,value,position): filename.readline() for line in filename: if line[position] != v

好的,文件包含:

apple,bot,cheese,-999
tea,fire,water,1
water,mountain,care,-999
因此,我想检查文件1中的行是否在结尾处有-999,如果有,请删除该行,并将没有的行传输到新文件中。到目前为止,我的职能是:

def clean(filename,cleanfile,value,position):
filename.readline()
for line in filename:
    if line[position] != value:
        cleanfile.write(line)

值为-999,位置为3。我在main中打开了文件并将其传递给函数,问题是新文件是空的。

您可以使用
csv
模块了解拆分和合并逗号分隔值的详细信息

import csv
def clean(filename,cleanfile,value,position):
    with open(filename) as reader_fp, open(cleanfile, 'w') as writer_fp:
        reader = csv.reader(reader_fp)
        writer = csv.writer(writer_fp)        
        for row in reader:
            if row[position] != value:
                writer.writerow(row)
试试这个:

def clean(filename,cleanfile,value,position):
    for lines in filename.readlines():
        line = lines.strip().split(",")
        if line[position] != value:
            cleanfile.write(",".join(line) + "\n")

clean(open("readFrom.txt", "r"), open("writeTo.txt", "w"), "-999", 3) 

如果知道该值始终位于每行的末尾,可以尝试:

def clean (file1, file2, value):
    for line in file1 :
        if line.strip().split(",")[-1] != value :
            file2.write(line)
    file1.close()
    file2.close()

clean(open("readFrom.txt", "r"), open("writeTo.txt", "w"), "-999") 

行是一个字符串<代码>行[位置]是单个字符。(假设“filename”实际上是一个打开的文件而不是文件名。)-999不在索引3处。你的意思是“在末尾”,还是你想把这一行分成几列,然后选择哪一列作为过滤器?我想它成为一列,我会在逗号处拆分它吗?你应该查看csv模块:它将每一行拆分成一个列表,然后你可以将该列表中的最后一项与“-999”进行比较我必须使用csv吗?,有没有不使用csv的其他方法?您可以自己读取行并拆分逗号。csv只处理小细节,仅此而已。@user3373402为什么不想使用
csv
?好的,我尝试了你的,它做了相反的事情,它删除了所有东西,除了以-999结尾的,我想删除以-999结尾的,留下restOk我修复了它,我做了==到=