添加到文件的数据与控制台中打印的数据不同

Different data is being added to a file than is being printed in the console

我一直在编写一个程序来获取任何给定点十英里半径内的所有坐标,当打印距离数据时,它的输出与文件中的数据不同。不仅如此,它还会在文件末尾创建一个空行。我该怎么办?

import geopy.distance
distance_data = open("Distance from start.txt", "w")
distance_data.truncate()
distance_data_to_add = []
for i in range (360):
    bearing = i
    lat = 51.8983
    long = 177.1822667
    for i in range (10):
        distance = i
        new_lat_long = 
        geopy.distance.distance(miles=distance).destination((lat, long), bearing=bearing)
    distance_data_to_add.append(new_lat_long)
for element in distance_data_to_add:
    distance_data.write(str(element) + "\n")
print(distance_data_to_add)

文件中的示例行是:
51 56m 30.0669s N, 177 10m 51.749s E

控制台中打印信息的示例是:
点(51.94168524994642, 177.1810413957121, 0.0)

对象在列表中看起来不同的原因是因为那是它们的 repr 版本,而不是 str 版本。所以将 repr(element) 写入文件而不是 str(element).

文件末尾有一个换行符的原因是因为你在每个元素之后写了 \n

替换为:

for element in distance_data_to_add:
    distance_data.write(str(element) + "\n")

有了这个:

distance_data.write('\n'.join(map(repr, distance_to_add)))

这将写入每个对象的 repr,每个对象之间有一个换行符(但不是在末尾)。

写完文件后不要忘记distance_data.close()