# 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()
比较是自定义排序功能。
例如,当结果打印在屏幕上时,结果是
752555452697747457t752551879448547328t1468258301659n
752563934733873152t752561055289577472t1468260508664n
但打印在文件上的结果是
6782762t12t1468248110665n
2660899225t12t1468229395665n
两个结果是不同的,为什么?
打开文件时的wb
选项使 python 等待字节对象写入该文件。 您的(注释(行fwrite.write(str(line))
发送一个字符串对象。 它不会产生以下错误吗?
TypeError: a bytes-like object is required, not 'str'
它也可能来自排序方法中的compare
属性。 这是什么?
→ 删除b
选项并删除compare
属性会在术语和文件输出中生成相同的输出。