2017-07-31 49 views
0
# coding=utf-8 
def compare(arr1, arr2): 
arr1 = arr1.strip() 
arr2 = arr2.strip() 
arr1 = arr1.split('\t') 
arr2 = arr2.split('\t') 
# print arr1[0], arr1[1] 
arr1min = min(long(arr1[0]), long(arr1[1])) 
arr1max = max(long(arr1[0]), long(arr1[1])) 
arr2min = min(long(arr2[0]), long(arr2[1])) 
arr2max = max(long(arr2[0]), long(arr2[1])) 
# print arr1max, arr2max, arr1min, arr1min 
if (arr1min < arr2min): 
    return -1 
elif (arr1min > arr2min): 
    return 1 
else: 
    if (arr1max < arr2max): 
     return -1 
    elif (arr1max > arr2max): 
     return 1 
    else: 
     return 0 
f = open('er1000000new.txt') 
fwrite = open('erzhesorted.txt', 'w') 
lines = f.readlines() 
lines.sort(compare) 
for line in lines: 
    # fwrite.write(str(line)) 
    print line 
f.close() 
fwrite.close() 

比较是自定义排序功能。结果打印到屏幕上并写入文件

例如,当结果显示在屏幕上,其结果是

752555452697747457\t752551879448547328\t1468258301659\n 
752563934733873152\t752561055289577472\t1468260508664\n 

但印刷在文件中的结果是

6782762\t12\t1468248110665\n 
2660899225\t12\t1468229395665\n 

两个结果是不同的,为什么呢?

+0

对它有帮助吗?如果不是,请提供更多关于您想要做什么以及如何处理它的细节,即什么是“排序(比较)”,文件的内容是什么? – mquantin

回答

0

当你打开一个文件时,wb选项使python等待一个字节对象写入该文件。 你的(注释)行fwrite.write(str(line))发送一个字符串对象。 它不会产生以下错误?

TypeError: a bytes-like object is required, not 'str' 

此外,它可能来自您的排序方法中的compare属性。 这是什么?

→删除b选项并删除compare属性会在词汇和文件输出中产生相同的输出。