【问题标题】:Python - gphoto2: how to convert output to JSON or python arrayPython - gphoto2:如何将输出转换为 JSON 或 python 数组
【发布时间】:2023-04-01 03:20:01
【问题描述】:

我正在使用 gphoto2,大多数命令都在工作,但我不知道如何使用命令行的输出进行下一步操作。

例如:

我想获取相机中的照片列表

command = ["sudo","gphoto2","--get-all-files","--skip-existing"]
call(command)

结果:

There is no file in folder '/'.                                                
There is no file in folder '/store_00010001'.
There is no file in folder '/store_00010001/DCIM'.
There are 6 files in folder '/store_00010001/DCIM/100EOS5D'.
#1     OM6_0018.JPG               rd 12335 KB image/jpeg
#2     OM6_0019.JPG               rd 12686 KB image/jpeg
#3     OM6_0020.JPG               rd 12500 KB image/jpeg
#4     OM6_0021.JPG               rd 12438 KB image/jpeg
#5     OM6_0022.JPG               rd 12668 KB image/jpeg
#6     OM6_0023.JPG               rd 12760 KB image/jpeg

我的目标是在 JSON 或 Python 数组中获得输出:

['OM6_0018.JPG', 'OM6_0019.JPG', 'OM6_0020.JPG', ...]

欢迎提出任何建议。

【问题讨论】:

    标签: python json libgphoto2


    【解决方案1】:

    所以,我不知道 gphoto 是如何工作的,但我会大胆猜测,您应该这样做,而不是进行子进程调用:

    import gphoto2 as gp
    
    def list_files(camera, path='/'):
        result = []
        # get files
        for name, value in gp.check_result(
                gp.gp_camera_folder_list_files(camera, path)):
            result.append(os.path.join(path, name))
        # read folders
        folders = []
        for name, value in gp.check_result(
                gp.gp_camera_folder_list_folders(camera, path)):
            folders.append(name)
        # recurse over subfolders
        for name in folders:
            result.extend(list_files(camera, os.path.join(path, name)))
        return result
    
    camera = ... #TODO set camera here
    path = ...  #TODO set path here
    files = list_files(camera, path)
    

    完整示例请参见此处:https://github.com/jim-easterbrook/python-gphoto2/blob/master/examples/list-files.py

    【讨论】:

      猜你喜欢
      • 2017-09-04
      • 2019-02-04
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2018-04-05
      • 2021-05-23
      相关资源
      最近更新 更多