Найти - Пользователи
Полная версия: TkFileDialog
Начало » Python для новичков » TkFileDialog
1 2
Rfg0
Открываю файл через TkFileDialog
polz = askopenfile(filetypes = [('RFAP files','.rfap')])
потом загружаю его через pickle
with open(polz, 'rb') as input_file:
    azcount = pickle.load(input_file)
А потом вылазит ошибка
with open(polz, 'rb') as input_file:
TypeError: invalid file: <_io.TextIOWrapper name='C:/Users/Roman/Desktop/polz.rfap' mode='r' encoding='cp1251'>
Помогите пожалуйста!
4kpt_IV
Как получен файл polz.rfap?
Rfg0
С файлом всё в порядке, если в ручную путь прописывать
polz = "polz.rfap"
то всё работает.
4kpt_IV
Т.е. если в

with open(polz, 'rb') as input_file:
    azcount = pickle.load(input_file)

поставить путь к файлу, то все работает?
Rfg0
Вот допустим.
with open('C:\\Users\\Roman\\Desktop\\polz.rfap', 'rb') as input_file:
    azcount = pickle.load(input_file
вот так работает
4kpt_IV
Тогда, что выдает?

polz = askopenfile(filetypes = [('RFAP files','.rfap')])
print(polz)
Rfg0
<_io.TextIOWrapper name='C:/Users/Roman/Desktop/polz.rfap' mode='r' encoding='cp1251'>
4kpt_IV
Оно Вам его открыло уже. Хотите получить путь к файлу?
Тогда нужна другая команда. Проверяйте:

polz = askopenfilename(filetypes = [('RFAP files','.rfap')])
print(polz)
Rfg0
Мне нужно файл загрузить через pickle.
input_file = open(polz, 'rb')
azcount = pickle.load(input_file)
print("Тип - "+ azcount.get_typepolz() +" \nИмя - " + azcount.get_name() + " \nВозраст - " + azcount.get_age() + " \nЛогин - " + azcount.get_login() + " \nПароль - " + azcount.get_password())
4kpt_IV
Не люблю по-два-раза объяснять, но на меня нашла блажь

Ваш код:

polz = askopenfile(filetypes = [('RFAP files','.rfap')])
with open(polz, 'rb') as input_file:
    azcount = pickle.load(input_file)

Не работает, потому, что в 1 строке вы получаете не путь к файлу, а уже объект открытого файла. В строке 2 вы пытаетесь его снова открыть, что и приводит к ошибке.

Смотрим сюда:

polz = askopenfilename(filetypes = [('RFAP files','.rfap')])
with open(polz, 'rb') as input_file:
    azcount = pickle.load(input_file)

Должно работать, так как в 1 строке возвращается путь к файлу, который потом можно использовать во 2 строке для непосредственного открытия файла и чтения из него информации (3 строка).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB