Форум программистов и сисадминов CyberForum.ru
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум Форум программистов > Форум Python
Восстановить пароль Регистрация

Ответ Создать новую тему
 
Старый 10.07.2013, 17:48   #1
hunker
Форумчанин
 
Аватар для hunker
 
Регистрация: 03.02.2013
Сообщений: 175
Репутация: 84 (63)
Лучшие ответы: 1
Как читать файл построчно? / Python

Есть метод:
Код Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def getAnswer(self, question):
    f = self.openFileIfExists(self.storage)
    answer = False
 
    if f:
        for line in f:
            lineArr = line.split('=')
 
            if lineArr[1] == question:
                answer = lineArr[0]
                break
 
        f.close()
 
    return answer
Дебаггер соскакивает на этой строке:
Код Python
1
for line in f:
и пропускает весь цикл.
Python 3.3.1
Старый 10.07.2013, 17:54   #2
ВАСИЛЕВС
Форумчанин
 
Регистрация: 14.02.2012
Сообщений: 1,418
Репутация: 420 (410)
Лучшие ответы: 7
hunker, обычно дебаггер показывает объяснение ошибки. Покажите, пожалуйста, это сообщение. Хотя, возможно, метод self.openFileIfExists возвращает None, в результате чего ошибка. Но возможна и другая ошибка, тут как повезет.
Другие темы раздела Форум программистов Python. Программирование с использованием Python. Помощь в решении задач на Python.
Python Как вывести на экран большее из двух данных чисел?
первые шажки с пайтоном, но уже прошу совета профессионалов о том, как правильно работать с операторами, если необходимо: а) Вывести на экран большее из двух данных чисел b) составить программу для вывода на экран дня недели по введённому его номеру. c) Напишите программу замены а на b в строке...
Python Как войти на сайт по логину с паролем?
Я бы хотел сделать программу на Python, которая просит ввести логин и пароль от VK или Cyberforum или еще какой ни будь ерунды, Вводим туда логин и пароль, и входим на сайт(в программе), там появляется надпись ( Упешно или нет) Обыскал весь форум, не нашел, дайте совет. Я еще только новичок в...
Старый 10.07.2013, 18:31  [ТС]   #3
hunker
Форумчанин
 
Аватар для hunker
 
Регистрация: 03.02.2013
Сообщений: 175
Репутация: 84 (63)
Лучшие ответы: 1
В том-то и дело, что ошибки не выскакивают. Метод openFileIfExists возвращает или ресурс (или стрим, или дескриптор, не знаю как в питоне это называют) или false. Если бы вернул false, до этой строчки
Код Python
1
for line in f:
Дело бы не дошло.
Собсно, метод:
Код Python
1
2
3
4
5
6
7
8
def openFileIfExists(self, fileName):
 
    if os.path.exists(fileName) and os.path.isfile(fileName):
        try:
            f = open(fileName, 'a+', 1, 'UTF-8')
            return f
        except IOError:
            return False
Старый 10.07.2013, 18:42   #4
dhxdzjbr
Форумчанин
 
Регистрация: 06.05.2013
Сообщений: 241
Репутация: 94 (79)
Лучшие ответы: 2
Покажи остальную часть кода, а то у тебя и нет внятного описания проблемы и есть один только метод.
Старый 10.07.2013, 18:42
Google
Объявления
Как читать файл построчно? / Python

Старый 10.07.2013, 18:47  [ТС]   #5
hunker
Форумчанин
 
Аватар для hunker
 
Регистрация: 03.02.2013
Сообщений: 175
Репутация: 84 (63)
Лучшие ответы: 1
Код Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import os
 
 
class Talker:
 
    storage = 'storage.txt'
 
    def talk(self):
        question = input()
 
        if question != 'End':
            self.answer(question)
            self.talk()
        else:
            exit(0)
 
    def answer(self, question):
        answer = self.getAnswer(question)
 
        if answer:
            print(answer)
        else:
            newAnswer = input('Я не знаю ответа: ')
            self.writeToStorage(question + '=' + newAnswer)
 
    def getAnswer(self, question):
        f = self.openFileIfExists(self.storage)
        answer = False
 
        if f:
            for line in f:
                lineArr = line.split('=')
 
                if lineArr[1] == question:
                    answer = lineArr[0]
                    break
 
            f.close()
 
        return answer
 
    def writeToStorage(self, data):
        f = self.openFileIfExists(self.storage)
 
        if f:
            pass
        else:
            f = open(self.storage, 'w')
        f.write(data + '\n')
 
    def openFileIfExists(self, fileName):
 
        if os.path.exists(fileName) and os.path.isfile(fileName):
            try:
                f = open(fileName, 'a+', 1, 'UTF-8')
                return f
            except IOError:
                return False
 
talker = Talker()
talker.talk()
Старый 10.07.2013, 19:22   #6
pashtet-kun
Форумчанин
 
Аватар для pashtet-kun
 
Регистрация: 30.09.2012
Сообщений: 126
Репутация: 65 (53)
Лучшие ответы: 7
а может файл не текстовый? Может он его на отдельные строки расщепить не может?
Старый 10.07.2013, 19:49  [ТС]   #7
hunker
Форумчанин
 
Аватар для hunker
 
Регистрация: 03.02.2013
Сообщений: 175
Репутация: 84 (63)
Лучшие ответы: 1
Файл текстовый. Метод writeToStorage без проблем пишет в него.

Добавлено через 13 минут
Хух, въехал. У меня указатель режима работы с файлом стоит a+ (чтение и дозапись). Тоесть файл читать можно, но указатель при открытии ставится в конец файла. Естесно, ни одна строка с файла не читается. Как-то я сразу не додумался...
Старый 10.07.2013, 20:25   #8
accept
Форумчанин
 
Регистрация: 10.12.2008
Сообщений: 10,678
Репутация: 4799 (3199)
Лучшие ответы: 34
Цитата Сообщение от hunker Посмотреть сообщение
Метод openFileIfExists возвращает или ресурс (или стрим, или дескриптор, не знаю как в питоне это называют) или false.
или None
Старый 11.07.2013, 00:24   #9
helter
Форумчанин
 
Регистрация: 12.03.2013
Сообщений: 1,781
Репутация: 1739 (1081)
Лучшие ответы: 82
Посмотрите ещё http://docs.python.org/3.3/tutorial/inputoutput.html 7.2.1 в конце и http://effbot.org/zone/python-with-statement.htm
Старый 11.07.2013, 00:24
Yandex
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Автор
Pascal (Паскаль) Создать файл (текстовый) средствами редактора. Читать этот файл построчно и упорядочить все цифры по убыванию
Подредактируйте пожалуйста код. Вот задачка: "Создать файл (текстовый) средствами редактора. Читать этот файл построчно и упорядочить все цифры по убыванию." Мой вариант - не идёт: program file_text; type symbols = set of '0'..'9'; var f1:text;
6x73wx1
Visual Basic Как заставить код читать текстовый файл построчно?
Вот фрагмент txt файла BARCODE|MASS|MASSRATE|PAYMENT|VALUE|INSRRATE|AIRRATE|INDEXTO 11197455595031|6129|10610|166400|166400|6656|0|169239 Ниже фрагмент кода который его читает FileNo = FreeFile Open strPath For Input As FileNo Do While Not EOF(FileNo)
PTimofeev
С++ для начинающих Проблемы с таймером в MFC. Задача: читать построчно и выводить строки в ListBox через каждые 5 секунд
Здравствуйте. Такая ситуация: Есть txt файл. Я хочу читать построчно и выводить строки в ListBox (при нажатии кнопки)через каждые ,допустим, 5 секунд. Когда строки заканчиваются, нада чтоб таймер останавливался. Я делаю так: CMytimerDlg::Timer() { if (!Test) {
pominub
Delphi для начинающих Как читать файл...
Скажите как читать вложенный (без его извлечения!!!) в форму файл (напр: картинку , чтоб на при нажатие на батон она "LoadFromFile" on TImage)? что непонятно пишите или неправильно то поправьте )))
CrossExE
С++ для начинающих Открываются 2 текстовых файла, сложить построчно числа из 1 и 2 файла, сумму вывести в третий файл построчно
Товарищи, помогите с кодом пожалуйста.=( 1. Создать текстовый файл и сохранить в нём текст из 10..100 слов. Слова в тексте разделены одним пробелом. Написать программу: Открывается файл, рассчитывается количество гласных букв в чётных словах не могли бы вы преобразовать, а то чето я не знаю...
from mars)
Опции темы

Текущее время: 05:48. Часовой пояс GMT +4.

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.