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

Ответ Создать новую тему
 
10.07.2013, 17:48   #1
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
Как читать файл построчно? / 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:48
AdAgent
Объявления
10.07.2013, 17:54   #2
ВАСИЛЕВС
Форумчанин
448 / 438 / 18
Регистрация: 14.02.2012
Сообщений: 1,472
Как читать файл построчно?

hunker, обычно дебаггер показывает объяснение ошибки. Покажите, пожалуйста, это сообщение. Хотя, возможно, метод self.openFileIfExists возвращает None, в результате чего ошибка. Но возможна и другая ошибка, тут как повезет.
Другие темы раздела
Python Как вывести на экран большее из двух данных чисел?
первые шажки с пайтоном, но уже прошу совета профессионалов о том, как правильно работать с операторами, если необходимо: а) Вывести на экран большее из двух данных чисел b) составить программу для вывода на экран дня недели по введённому его номеру. c) Напишите программу замены а на b в строке...
Python Как войти на сайт по логину с паролем?
Я бы хотел сделать программу на Python, которая просит ввести логин и пароль от VK или Cyberforum или еще какой ни будь ерунды, Вводим туда логин и пароль, и входим на сайт(в программе), там появляется надпись ( Упешно или нет) Обыскал весь форум, не нашел, дайте совет. Я еще только новичок в...
10.07.2013, 18:31  [ТС]   #3
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
Как читать файл построчно?

В том-то и дело, что ошибки не выскакивают. Метод 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
Форумчанин
94 / 79 / 2
Регистрация: 06.05.2013
Сообщений: 241
Как читать файл построчно?

Покажи остальную часть кода, а то у тебя и нет внятного описания проблемы и есть один только метод.
10.07.2013, 18:47  [ТС]   #5
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
Как читать файл построчно?

Код 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
Форумчанин
89 / 77 / 3
Регистрация: 30.09.2012
Сообщений: 198
Как читать файл построчно?

а может файл не текстовый? Может он его на отдельные строки расщепить не может?
10.07.2013, 19:49  [ТС]   #7
hunker
Форумчанин
84 / 63 / 1
Регистрация: 03.02.2013
Сообщений: 175
Как читать файл построчно?

Файл текстовый. Метод writeToStorage без проблем пишет в него.

Добавлено через 13 минут
Хух, въехал. У меня указатель режима работы с файлом стоит a+ (чтение и дозапись). Тоесть файл читать можно, но указатель при открытии ставится в конец файла. Естесно, ни одна строка с файла не читается. Как-то я сразу не додумался...
10.07.2013, 20:25   #8
accept
Форумчанин
4810 / 3210 / 34
Регистрация: 10.12.2008
Сообщений: 10,680
Как читать файл построчно?

Цитата Сообщение от hunker Посмотреть сообщение
Метод openFileIfExists возвращает или ресурс (или стрим, или дескриптор, не знаю как в питоне это называют) или false.
или None
11.07.2013, 00:24   #9
helter
Форумчанин
1596 / 1209 / 88
Регистрация: 12.03.2013
Сообщений: 2,033
Как читать файл построчно? / Python

Посмотрите ещё 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
Объявления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему

Похожие темы
Тема Раздел Автор Дата
Python Клиент должен считать построчно файл и отправить его серверу
Здравствуйте форумчане. Только начал изучать питон. Нужно помощь. Есть СЕРВЕР-КЛИЕНТ. Клиент должен считать построчно файл и отправить его серверу: import socket f = open('auto.bat') lines = f.readlines() conn = socket.socket() conn.connect(("127.0.0.1", 14900)) # Как теперь отправить...
Python webmeddoc 28.07.2014 18:05
Pascal Создать файл (текстовый) средствами редактора. Читать этот файл построчно и упорядочить все цифры по убыванию
Подредактируйте пожалуйста код. Вот задачка: "Создать файл (текстовый) средствами редактора. Читать этот файл построчно и упорядочить все цифры по убыванию." Мой вариант - не идёт: program file_text; type symbols = set of '0'..'9'; var f1:text;
Pascal (Паскаль) 6x73wx1 11.12.2013 21:54
Python Как вывести построчно заданные повторы символов?
Нужно создать простейшую программу, которую на любом другом языке я могу реализовать, например на pascal она выглядит так : Var a:array of interger; Var i, j:byte; Begin For i:=0 to 6 do Readln (a); For i:=0 to 6 do if a>0 then Begin Write(a,' ');
Python Lionet_Symba 02.12.2013 09:05
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)
Visual Basic PTimofeev 19.04.2011 13:41
Python как читать текст из файла
Я ну очень начинающий... нужно передать переменой строку, из которой состоит файл file.csv... как это сделать? >>> open(sig_lnk,'rb') <_io.TextIOWrapperr name='c:/file.csv'> а мне нужен текст... ps: Python 3.1.3
Python lome_kingar 18.02.2011 02:00
Опции темы

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

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