Форум программистов, компьютерный форум, киберфорум
Наши страницы

Python

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
hunker
86 / 65 / 1
Регистрация: 03.02.2013
Сообщений: 176
#1

Как читать файл построчно? - Python

10.07.2013, 17:48. Просмотров 3174. Ответов 8
Метки нет (Все метки)

Есть метод:
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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2013, 17:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как читать файл построчно? (Python):

Клиент должен считать построчно файл и отправить его серверу - Python
Здравствуйте форумчане. Только начал изучать питон. Нужно помощь. Есть СЕРВЕР-КЛИЕНТ. Клиент должен считать построчно файл и отправить...

как читать текст из файла - Python
Я ну очень начинающий... нужно передать переменой строку, из которой состоит файл file.csv... как это сделать? >>> open(sig_lnk,'rb') ...

Как правильно открывать и читать файлы? - Python
Здравствуйте, не пойму из-за чего начала вылетать следующая ошибка при вызове скрипта: Вызываю так: python3 /home/cp/gameservers.py...

Как вывести построчно заданные повторы символов? - Python
Нужно создать простейшую программу, которую на любом другом языке я могу реализовать, например на pascal она выглядит так : Var a:array...

Как вывести числа построчно по пять повторяющихся цифр? - Python
Уважаемый Wolkodav( сожалению не знаю Вашего имени) , огромное Вам спасибо!!! но у меня еще четыре задачи, которые нужно решить. осмелюсь...

Как вывести ряд чисел построчно, сдвигая их влево? - Python
Спасибо огромное. у меня вообще дано шесть задач, а по правилам форума можно только 1 за раз выдавать. не могли бы Вы помочь со следующей...

8
ВАСИЛЕВС
556 / 479 / 60
Регистрация: 14.02.2012
Сообщений: 1,561
10.07.2013, 17:54 #2
hunker, обычно дебаггер показывает объяснение ошибки. Покажите, пожалуйста, это сообщение. Хотя, возможно, метод self.openFileIfExists возвращает None, в результате чего ошибка. Но возможна и другая ошибка, тут как повезет.
1
hunker
86 / 65 / 1
Регистрация: 03.02.2013
Сообщений: 176
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
0
dhxdzjbr
96 / 81 / 2
Регистрация: 06.05.2013
Сообщений: 242
10.07.2013, 18:42 #4
Покажи остальную часть кода, а то у тебя и нет внятного описания проблемы и есть один только метод.
0
hunker
86 / 65 / 1
Регистрация: 03.02.2013
Сообщений: 176
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()
0
pashtet-kun
127 / 115 / 18
Регистрация: 30.09.2012
Сообщений: 372
10.07.2013, 19:22 #6
а может файл не текстовый? Может он его на отдельные строки расщепить не может?
0
hunker
86 / 65 / 1
Регистрация: 03.02.2013
Сообщений: 176
10.07.2013, 19:49  [ТС] #7
Файл текстовый. Метод writeToStorage без проблем пишет в него.

Добавлено через 13 минут
Хух, въехал. У меня указатель режима работы с файлом стоит a+ (чтение и дозапись). Тоесть файл читать можно, но указатель при открытии ставится в конец файла. Естесно, ни одна строка с файла не читается. Как-то я сразу не додумался...
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
10.07.2013, 20:25 #8
Цитата Сообщение от hunker Посмотреть сообщение
Метод openFileIfExists возвращает или ресурс (или стрим, или дескриптор, не знаю как в питоне это называют) или false.
или None
1
helter
Эксперт по математике/физике
3654 / 2680 / 272
Регистрация: 12.03.2013
Сообщений: 4,921
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
1
11.07.2013, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2013, 00:24
Привет! Вот еще темы с ответами:

Как вывести числа построчно в виде повторяющихся цифр? - Python
Уважаемый Wolkodav( сожалению не знаю Вашего имени) , огромное Вам спасибо!!! но у меня еще четыре задачи, которые нужно решить. осмелюсь...

Как импортировать Main Window .ui-файл в .py-файл используя PySide? - Python
Есть "main.py" и "main.ui", .ui именно Main Window, не Widget, как мне импортнуть .ui в .py? Вроде должно быть просто, но что-то сам толком...

Какую книгу читатЬ? - Python
Решил все-таки заниматься пайтоном по книжке. У меня есть в бумаж.варианте “Python 3 и PyQt. Разработка приложений” . автор Прохоренок Н....

Как заставить код читать текстовый файл построчно? - Visual Basic
Вот фрагмент txt файла BARCODE|MASS|MASSRATE|PAYMENT|VALUE|INSRRATE|AIRRATE|INDEXTO ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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