Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2016 12:21:19

Rfg0
Зарегистрирован: 2016-01-24
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

TkFileDialog

Открываю файл через 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'>
Помогите пожалуйста!

Офлайн

#2 Янв. 24, 2016 12:57:28

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

TkFileDialog

Как получен файл polz.rfap?

Офлайн

#3 Янв. 24, 2016 13:02:16

Rfg0
Зарегистрирован: 2016-01-24
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

TkFileDialog

С файлом всё в порядке, если в ручную путь прописывать

polz = "polz.rfap"
то всё работает.

Офлайн

#4 Янв. 24, 2016 13:04:52

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

TkFileDialog

Т.е. если в

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

поставить путь к файлу, то все работает?

Офлайн

#5 Янв. 24, 2016 13:08:08

Rfg0
Зарегистрирован: 2016-01-24
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

TkFileDialog

Вот допустим.

with open('C:\\Users\\Roman\\Desktop\\polz.rfap', 'rb') as input_file:
    azcount = pickle.load(input_file
вот так работает

Отредактировано Rfg0 (Янв. 24, 2016 13:09:40)

Офлайн

#6 Янв. 24, 2016 13:24:41

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

TkFileDialog

Тогда, что выдает?

polz = askopenfile(filetypes = [('RFAP files','.rfap')])
print(polz)

Отредактировано 4kpt_IV (Янв. 24, 2016 13:24:48)

Офлайн

#7 Янв. 24, 2016 13:30:30

Rfg0
Зарегистрирован: 2016-01-24
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

TkFileDialog

<_io.TextIOWrapper name='C:/Users/Roman/Desktop/polz.rfap' mode='r' encoding='cp1251'>

Офлайн

#8 Янв. 24, 2016 13:37:11

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

TkFileDialog

Оно Вам его открыло уже. Хотите получить путь к файлу?
Тогда нужна другая команда. Проверяйте:

polz = askopenfilename(filetypes = [('RFAP files','.rfap')])
print(polz)

Офлайн

#9 Янв. 24, 2016 13:43:13

Rfg0
Зарегистрирован: 2016-01-24
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

TkFileDialog

Мне нужно файл загрузить через 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())

Отредактировано Rfg0 (Янв. 24, 2016 13:44:17)

Офлайн

#10 Янв. 24, 2016 14:30:29

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

TkFileDialog

Не люблю по-два-раза объяснять, но на меня нашла блажь

Ваш код:

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 строка).

Отредактировано 4kpt_IV (Янв. 24, 2016 14:32:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version