python3 война с переменными

есть файл main.txt который содержит

[InputMediaPhoto("/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/64f0dca715005311bfe3895f27ff2f9e.jpg",),InputMediaPhoto("/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/56a5bf9777adb9ceb7d10f4ef6433f89.jpg",),InputMediaPhoto("/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/497bd9cd0dea889667519a9a0b0834ea.jpg",),InputMediaPhoto("/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/7f06431656943ce3d1d42928196a93df.jpg",caption = "Продам PD-Optimum 160 Цена: P 70 000Продам
 PD-Optimum 160, DOM: 12.2011, 70 000 руб, одно применение, в отл состоянии. тел +79136282842 Сергей 
2020-02-10 15:44:41")]

если его прочитать из файла вот так

parsed_file = open(file,'r')
datafromfile = parsed_file.read()

то получаю ошибку

AttributeError: 'str' object has no attribute 'caption'

если просто открыть и вставить текст из файла в функцию то все ок.

помогите как заставить питон думать что я написал это руками.

вот то что есть

import os
from pyrogram import Client
from pyrogram import InputMediaPhoto, InputMediaVideo



api_id = &&&55511 
api_hash = 'f40fc8cae0298b6c1d490c'



allfiles = os.listdir()
with Client("my_account", api_id, api_hash) as app:
    for file in allfiles:
        if file.endswith('.txt'):
            parsed_file = open(file,'r')
            datafromfile = parsed_file.read()
            print('________')
            app.send_media_group("-1001499559268",datafromfile)

Ответы (1 шт):

Автор решения: insolor

Вы пытаетесь хранить данные в виде кода python, так лучше не делать. Данные лучше хранить в форматах независимых от языка программирования.

Как вариант, можно использовать json:

Файл данных (media - имя первого параметра класса InputMediaPhoto):

[{"media":"/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/64f0dca715005311bfe3895f27ff2f9e.jpg"},
 {"media":"/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/56a5bf9777adb9ceb7d10f4ef6433f89.jpg"},
 {"media":"/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/497bd9cd0dea889667519a9a0b0834ea.jpg"},
 {"media":"/home/alex/Рабочий стол/project_skycenter/new/2020-02-10 15:44:41/7f06431656943ce3d1d42928196a93df.jpg",
  "caption":"Продам PD-Optimum 160 Цена: P 70 000Продам PD-Optimum 160, DOM: 12.2011, 70 000 руб, одно применение, в отл состоянии. тел +79136282842 Сергей 2020-02-10 15:44:41"}]

Чтение json и преобразование в список объектов InputMediaPhoto:

import json

...

    for file in allfiles:
        if file.endswith('.json'):
            with open(file,'r') as f:
                data = json.loads(f)
                # Тут используем тот факт,
                # что в файле json имена полей совпадают
                # с именами параметров класса InputMediaPhoto
                datafromfile = [InputMediaPhoto(**item) for item in data]
                print('________')
                app.send_media_group("-1001499559268",datafromfile)
→ Ссылка