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)