Python - gphoto2: как преобразовать вывод в JSON или массив python - PullRequest
0 голосов
/ 15 ноября 2018

Я работаю с 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', ...]

Любое предложениеценится.

1 Ответ

0 голосов
/ 15 ноября 2018

Итак, я понятия не имею, как работает 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

...