@Govnokodddd

Как исправить этот баг?

Имеется код:

if __name__ == "__main__":
	path = input('Введите имя файла:')
	a = open(path)
	act = input('Какое действие хотите выполнить с файлом? \n 1. Подсчитать кол-во строк \n 2. Подсчитать кол-во символов в файле \n 3. 1 + 2: ')
	
def countLines(name):
	count = 0
	for l in name.readlines():
		count += 1
	return count
def countChars(name):
	b = len(name.read())
	return b
def test(name):
	print(countLines(name))
	print(countChars(name))
	return "Done"
	
if __name__ == "__main__":
	if act == "1":
		print(countLines(a))
	elif act == "2":
		print(countChars(a))
	elif act == "3":
		print(test(a))
	else:
		print("Ошибка")


3 действие работает только на половину, выполняя первую функцию. Как исправить данный недочёт?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 2
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
Когда вы посчитали строки в файле, вы дочитали его до конца. После этого вызов read() вернет EOF, т.е. по-сути ни одного символа больше прочитать нельзя. Чтобы прочитать файл снова, нужно вызвать seek(0) (ну или написать еще один метод, который одновременно и строки, и символы считает).
Ответ написан
Комментировать
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что файл вы уже прочитали до конца, и не вернулись в начало. Либо делайте seek(0), либо используйте контекстный менеджер
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы