Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较python中的两个文件,并在新文件中保存行差异_Python_File_File Io_Comparison - Fatal编程技术网

比较python中的两个文件,并在新文件中保存行差异

比较python中的两个文件,并在新文件中保存行差异,python,file,file-io,comparison,Python,File,File Io,Comparison,我有两个文本文件,其中包含如下示例所示的数据。 使用python,我想将第一行中没有出现在第二个文件中的行保存到一个新文件中。这些行不包括在文件中 ---行--第一个文件--第二个文件 新文件必须具有此结构 2 5 9 11 编辑:这是到目前为止我的代码。sendfiles列表包含具有原始数据的文件的路径。列表receivefiles包含指向数据较少的文件的路径 for x in range(0, len(sendfiles)): f1 = open(send

我有两个文本文件,其中包含如下示例所示的数据。 使用python,我想将第一行中没有出现在第二个文件中的行保存到一个新文件中。这些行不包括在文件中

---行--第一个文件--第二个文件

新文件必须具有此结构

2
5
9
11
编辑:这是到目前为止我的代码。sendfiles列表包含具有原始数据的文件的路径。列表receivefiles包含指向数据较少的文件的路径

    for x in range(0, len(sendfiles)):      
       f1 = open(sendfiles[x], 'r').readlines()
       f2 = open(receivefiles[x], 'r').readlines()
       path = sendfiles[x].strip('send.txt')
       final_file = path + 'out.txt'
       with open(final_file,'w') as f:
           ...
在unix中,我使用diff-f命令,但我知道我必须编写一些python代码才能做到这一点

Edit2:这是的例子,这是的例子

优化的一个

f1 = open('a', 'r').readlines()
f2 = open('b', 'r').readlines()
out = []
indexa = 0
indexb = 0
out = []
while(1):
    try:
        if f1[indexa][:-1] ==  f2[indexb][:-1]:
            indexa +=1
            indexb +=1
        elif f1[indexa][:-1] > f2[indexb][:-1]:
            indexb += 1
        elif f1[indexa][:-1] < f2[indexb][:-1]:
            out.append(indexa+1)
            indexa += 1
    except IndexError:
        break
for i in out:
    print i

检查可能重复这不是问题,这是规范。你要我们为你写一个程序。这不是这个网站的目的。@BryanOakley我很抱歉没有写我的程序。不,我没有要求写我的程序,但我需要帮助!就这些@吉农:但是你需要什么样的帮助呢!你知道怎么编程吗?你知道python吗?你知道怎么读文件吗?你知道如何比较字符串吗?你知道如何写入文件吗?你知道怎么计算行号吗?@guarav这也很费时!无论如何谢谢你!这个答案最好解释一下。@guarav就是这样!非常感谢你@guarav你能简单地解释一下if-elif循环的想法吗?我是说你对indexa和indexb的看法。提前谢谢你!基本上indexa和indexb是两个指针,用于跟踪两个文件中的当前行号。如果两行中的值相同,则两个索引都可以递增。如果第一个文件值更大,那么我们可以增加indexb使两者相等,或者增加indexa,并且您还需要将该值存储在数组中,以便可以打印差异线
f1 = open('a', 'r').readlines()
f2 = open('b', 'r').readlines()
out = []
count = 1 
for i in f1:
    flag = False
    for j in f2:
        if i == j:
            flag = True
    if not flag:
        out.append(count)
    count+=1
for o in out:
    print o
f1 = open('a', 'r').readlines()
f2 = open('b', 'r').readlines()
out = []
indexa = 0
indexb = 0
out = []
while(1):
    try:
        if f1[indexa][:-1] ==  f2[indexb][:-1]:
            indexa +=1
            indexb +=1
        elif f1[indexa][:-1] > f2[indexb][:-1]:
            indexb += 1
        elif f1[indexa][:-1] < f2[indexb][:-1]:
            out.append(indexa+1)
            indexa += 1
    except IndexError:
        break
for i in out:
    print i