Ваш код выглядит в целом правильно, но поскольку вы никогда не закрываете и не очищаете файл в бесконечном цикле while, файл может записываться достаточно медленно, чтобы он еще не был записан на диск.
Вот упрощенныйверсия вашего кода с добавлением флеша.Если вы запустите этот скрипт, не останавливая его, и посмотрите на содержимое CSV, вы увидите, что он добавляет строку каждую секунду.Удалите сброс, и он может оставаться пустым в течение длительного времени ... по крайней мере, пока ОС не решит, что пришло время сбросить буфер на сам диск.
#!python2
from csv import writer
import time
counter = 0
with open('GPSdata.csv', 'wb') as f:
data_writer = writer(f)
data_writer.writerow(['Term No.','Date and Time','Latitude','Longitude'])
while True:
time.sleep(1)
data = [counter,2,3,4]
data_writer.writerow(data)
print(data)
f.flush()
counter = counter + 1