打印到屏幕和写入文件的结果是不同的


# 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属性会在术语和文件输出中生成相同的输出。

最新更新