Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > >
Восстановить пароль Регистрация
 
hunker
Форумчанин
84 / 63 / 1
Регистрация: 04.02.2013
Сообщений: 175
10.07.2013, 18:48     Как читать файл построчно?   #1
Есть метод:
Код 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
AdAgent
Объявления
10.07.2013, 18:48     Как читать файл построчно?
ВАСИЛЕВС
Форумчанин
465 / 455 / 25
Регистрация: 14.02.2012
Сообщений: 1,498
10.07.2013, 18:54     Как читать файл построчно?   #2
hunker, обычно дебаггер показывает объяснение ошибки. Покажите, пожалуйста, это сообщение. Хотя, возможно, метод self.openFileIfExists возвращает None, в результате чего ошибка. Но возможна и другая ошибка, тут как повезет.
hunker
Форумчанин
84 / 63 / 1
Регистрация: 04.02.2013
Сообщений: 175
10.07.2013, 19:31  [ТС]     Как читать файл построчно?   #3
В том-то и дело, что ошибки не выскакивают. Метод 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
dhxdzjbr
Форумчанин
94 / 79 / 2
Регистрация: 06.05.2013
Сообщений: 242
10.07.2013, 19:42     Как читать файл построчно?   #4
Покажи остальную часть кода, а то у тебя и нет внятного описания проблемы и есть один только метод.
hunker
Форумчанин
84 / 63 / 1
Регистрация: 04.02.2013
Сообщений: 175
10.07.2013, 19:47  [ТС]     Как читать файл построчно?   #5
Код 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()
AdAgent
Объявления
10.07.2013, 19:47     Как читать файл построчно?
pashtet-kun
Форумчанин
101 / 89 / 8
Регистрация: 30.09.2012
Сообщений: 243
10.07.2013, 20:22     Как читать файл построчно?   #6
а может файл не текстовый? Может он его на отдельные строки расщепить не может?
hunker
Форумчанин
84 / 63 / 1
Регистрация: 04.02.2013
Сообщений: 175
10.07.2013, 20:49  [ТС]     Как читать файл построчно?   #7
Файл текстовый. Метод writeToStorage без проблем пишет в него.

Добавлено через 13 минут
Хух, въехал. У меня указатель режима работы с файлом стоит a+ (чтение и дозапись). Тоесть файл читать можно, но указатель при открытии ставится в конец файла. Естесно, ни одна строка с файла не читается. Как-то я сразу не додумался...
accept
Форумчанин
4813 / 3213 / 34
Регистрация: 10.12.2008
Сообщений: 10,680
10.07.2013, 21:25     Как читать файл построчно?   #8
Цитата Сообщение от hunker Посмотреть сообщение
Метод openFileIfExists возвращает или ресурс (или стрим, или дескриптор, не знаю как в питоне это называют) или false.
или None
helter
Форумчанин
1892 / 1443 / 115
Регистрация: 12.03.2013
Сообщений: 2,373
11.07.2013, 01:24     Как читать файл построчно?   #9
Посмотрите ещё http://docs.python.org/3.3/tutorial/inputoutput.html 7.2.1 в конце и http://effbot.org/zone/python-with-statement.htm
Yandex
Объявления
11.07.2013, 01:24     Как читать файл построчно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Опции темы

Текущее время: 13:39. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
Яндекс.Метрика