Python 如何从文件中删除一行?

Python 如何从文件中删除一行?,python,file,Python,File,我有两个文件(file1和file2),希望将file2的每一行与file1中的所有行进行比较。如果满足此条件: (ln2[1][0]!=ln1[1][0])和(ln2[1][0]!='-') 然后我想从file2中删除file2的当前行,即ln2。 我用python编写了这段代码,但有一个错误 arr1 = [] with open('FA1.txt', 'r') as file1: Lines1 = file1.readlines() for line in Lines1:

我有两个文件(file1和file2),希望将file2的每一行与file1中的所有行进行比较。如果满足此条件:
(ln2[1][0]!=ln1[1][0])和(ln2[1][0]!='-')
然后我想从file2中删除file2的当前行,即ln2。 我用python编写了这段代码,但有一个错误

arr1 = []
with open('FA1.txt', 'r') as file1:
    Lines1 = file1.readlines()
    for line in Lines1:
        arr1.append(line.split())

arr2 = []
with open('a.txt', 'r') as file2:
    Lines2 = file2.readlines()
    for line in Lines2:
        arr2.append(line.split())


for ln2 in arr2:
    for ln1 in arr1:
        if (ln2[1][0] != ln1[1][0]) and (ln2[1][0] != '-'):
            text_file = open("a.txt", "a+")
            text_file.write(ln2, '')
            text_file.close()
            #ln2 = ''
另外,我没有使用最后三行代码,而是使用了:
(ln2='')
,但出现了错误:
索引器:字符串索引超出范围

文件的内容如下所示:

File1: 
010 00
001 11 
010 10

File2:
00- 0-
0-0 0-
1-- -0
-10 0-
我得到以下错误:

TypeError: write() takes exactly one argument (2 given) 

重写代码会给我们带来:

with open('FA1.txt', 'r') as file1:
    arr1 = [line.split() for line in file1]

with open('a.txt', 'r') as file2:
    arr2 = [line.split() for line in file2]

with open("b.txt", "w") as text_file:
    for line2 in arr2:
        for line1 in arr1:
            if (line2[1][0] != line1[1][0]) and (line2[1][0] != '-'):
                text_file.write(' '.join(line2) + '\n')
我使用了不同的文件作为输出,因为我不想破坏我的测试数据

但是现在,由于循环,您的结果文件
b.txt
将包含重复的行,您将输出与条件匹配的所有行,而这些行应该被删除

00- 0-
00- 0-
0-0 0-
0-0 0-
-10 0-
-10 0-
根据您的问题,您希望将第二个文件的每一行与第一个文件的每一行进行比较,如果没有任何一行匹配,则写入数据。代码需要反映这一点,因此我们使用
如果没有任何…

with open('FA1.txt', 'r') as file1:
    arr1 = [line.split() for line in file1]

with open('a.txt', 'r') as file2:
    arr2 = [line.split() for line in file2]

with open("b2.txt", "w") as text_file:
    for line2 in arr2:
        if not any((line2[1][0] != line1[1][0]) and (line2[1][0] != '-') for line1 in arr1):
            text_file.write(' '.join(line2))
结果是

1-- -0


arr1=[line.split()用于文件1中的行]
的简短说明。我使用列表理解来缩短代码。而且文件是可编辑的,所以我不必在这里使用
readlines

,但我有一个错误。。。什么错误?Stacktrace?当我使用:text_file.write(ln2,'')时,错误是:TypeError:write()只接受一个参数(给定2个),当我使用:ln2=''时,错误是:indexer:string index超出范围。如果我不应该为write方法提供两个参数,那么我如何删除该行?你不能。您需要a)打开带有“w”的“a.txt”-它将截断它,然后写入所有应该在其中结束的数据,或者b)将所有需要的数据写入新文件,删除旧文件并重命名新文件。您可以添加预期的输出吗?