Python3 - CSV 编写器按日期排序

Python3 - CSV Writer Sort by Date

我在创建 Python 脚本时遇到一些问题,希望您能帮助我。

脚本应从多张图像中读取 exif 信息(日期、时间和 GPSInfo),并将按日期排序的结果写入 CSV 文件。

目前我设法将数据写入CSV文件。但我无法按日期对条目进行排序。

# for every file in the directory get the latlng
for file in os.listdir("/path/"):
    if file.endswith(".jpg" or ".png"):
        path_name = '/path'+ file
        meta_data =  ImageMetaData(path_name)
        latlng =meta_data.get_lat_lng()
        date = meta_data.date
        print(latlng, date)
        with open('dez.csv', 'w', newline='') as csvfile:
            spamwriter = csv.writer(csvfile, delimiter=' ',
                            quotechar='|', quoting=csv.QUOTE_MINIMAL)
            for x in range(0, 10):
                spamwriter.writerow(latlng)
                spamwriter.writerow(date)

既然你说你不希望输出 CSV 中的实际日期,你应该构建一个字典映射 dates 到 lat_lng 对,对字典的键和 然后 将字典的每个值写入 CSV。

from pathlib import Path

IMAGE_DIRECTORY = Path("/home/user/Schreibtisch/recoveredPictures/")

images = list(IMAGE_DIRECTORY.glob("*.jpg")) + list(IMAGE_DIRECTORY.glob("*.png"))

date_to_lat_lng = {}
for image in images:
    meta_data = ImageMetaData(path_name)
    lat_lng = meta_data.get_lat_lng()
    date = meta_data.get_date_time()
    date_to_lat_lng[date] = [lat_lng[0], lat_lng[1]]

with open("test.csv", "w", newline="") as csvfile:
    writer = csv.writer(csvfile, delimiter="\t")
    for date in sorted(date_to_lat_lng):
        writer.writerow(date_to_lat_lng[date])

(更新了您在评论中要求的所有更改)