Форум программистов, компьютерный форум CyberForum.ru Форум программистов | Компьютерный форум | Форум web-программистов | Форум по электронике и бытовой технике | Форум о софте | Научный форум | Карьера и бизнес
CyberForum.ru - форум программистов и сисадминов > >
Восстановить пароль Регистрация

Ответ Создать новую тему
 
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
10.07.2013, 17: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, 17:48
ВАСИЛЕВС
Форумчанин
460 / 450 / 21
Регистрация: 14.02.2012
Сообщений: 1,489
10.07.2013, 17:54
  #2
hunker, обычно дебаггер показывает объяснение ошибки. Покажите, пожалуйста, это сообщение. Хотя, возможно, метод self.openFileIfExists возвращает None, в результате чего ошибка. Но возможна и другая ошибка, тут как повезет.
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
10.07.2013, 18: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
Сообщений: 241
10.07.2013, 18:42
  #4
Покажи остальную часть кода, а то у тебя и нет внятного описания проблемы и есть один только метод.
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
10.07.2013, 18: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()
pashtet-kun
Форумчанин
90 / 78 / 3
Регистрация: 30.09.2012
Сообщений: 202
10.07.2013, 19:22
  #6
а может файл не текстовый? Может он его на отдельные строки расщепить не может?
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
10.07.2013, 19:49  [ТС]
  #7
Файл текстовый. Метод writeToStorage без проблем пишет в него.

Добавлено через 13 минут
Хух, въехал. У меня указатель режима работы с файлом стоит a+ (чтение и дозапись). Тоесть файл читать можно, но указатель при открытии ставится в конец файла. Естесно, ни одна строка с файла не читается. Как-то я сразу не додумался...
accept
Форумчанин
4810 / 3210 / 34
Регистрация: 10.12.2008
Сообщений: 10,680
10.07.2013, 20:25
  #8
Цитата Сообщение от hunker Посмотреть сообщение
Метод openFileIfExists возвращает или ресурс (или стрим, или дескриптор, не знаю как в питоне это называют) или false.
или None
helter
Форумчанин
1597 / 1210 / 89
Регистрация: 12.03.2013
Сообщений: 2,035
11.07.2013, 00: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, 00:24
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Python Клиент должен считать построчно файл и отправить его серверу
Здравствуйте форумчане. Только начал изучать питон. Нужно помощь. Есть СЕРВЕР-КЛИЕНТ. Клиент должен считать построчно файл и отправить его серверу: import socket f = open('auto.bat') lines =...
Python webmeddoc 28.07.2014 18:05
Pascal Создать файл (текстовый) средствами редактора. Читать этот файл построчно и упорядочить все цифры по убыванию
Подредактируйте пожалуйста код. Вот задачка: "Создать файл (текстовый) средствами редактора. Читать этот файл построчно и упорядочить все цифры по убыванию." Мой вариант - не идёт: program...
Pascal (Паскаль) 6x73wx1 11.12.2013 21:54
Python Как вывести числа построчно в виде повторяющихся цифр?
Уважаемый Wolkodav( сожалению не знаю Вашего имени) , огромное Вам спасибо!!! но у меня еще четыре задачи, которые нужно решить. осмелюсь их выложить... еще раз благодарю с уважением Владимир 1...
Python Vladimiro8 09.12.2013 19:44
Python Как вывести построчно заданные повторы символов?
Нужно создать простейшую программу, которую на любом другом языке я могу реализовать, например на pascal она выглядит так : Var a:array of interger; Var i, j:byte; Begin For i:=0 to 6 do Readln...
Python Lionet_Symba 02.12.2013 09:05
Python Как правильно открывать и читать файлы?
Здравствуйте, не пойму из-за чего начала вылетать следующая ошибка при вызове скрипта: Вызываю так: python3 /home/cp/gameservers.py -action start -sid 1 -game cs -ip xx.xx.xx.xx -port 27015...
Python exgaming 17.11.2013 21:37
Visual Basic Как заставить код читать текстовый файл построчно?
Вот фрагмент txt файла BARCODE|MASS|MASSRATE|PAYMENT|VALUE|INSRRATE|AIRRATE|INDEXTO 11197455595031|6129|10610|166400|166400|6656|0|169239 Ниже фрагмент кода который его читает FileNo =...
Visual Basic PTimofeev 19.04.2011 13:41
C++ Проблемы с таймером в MFC. Задача: читать построчно и выводить строки в ListBox через каждые 5 секунд
Здравствуйте. Такая ситуация: Есть txt файл. Я хочу читать построчно и выводить строки в ListBox (при нажатии кнопки)через каждые ,допустим, 5 секунд. Когда строки заканчиваются, нада чтоб таймер...
С++ для начинающих pominub 26.02.2011 04:25
Python как читать текст из файла
Я ну очень начинающий... нужно передать переменой строку, из которой состоит файл file.csv... как это сделать? >>> open(sig_lnk,'rb') <_io.TextIOWrapperr name='c:/file.csv'> а мне нужен...
Python lome_kingar 18.02.2011 02:00
Опции темы

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

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