Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 14, 2016 15:31:30

kot.pushin
Зарегистрирован: 2016-01-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

есть исходный текстовый файл. С помощью python нужно пересохранить файл, чтобы предложение после знака “.” начиналось с новой строки. Хочется просто наглядно увидеть работу функций по открытию файла в питоне и тд. спасибо заранее

Офлайн

#2 Янв. 14, 2016 15:34:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Офлайн

#3 Янв. 14, 2016 19:32:57

koward
Зарегистрирован: 2016-01-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

как пример) есть конечно лучше решения

import os
def example(name_file):
	path = os.path.join(os.path.dirname(__file__), name_file)
	with open(path) as f1:
		data = [e + '.' + '\n' for e in f1.read().split('.')]
		with open(path, 'w') as f2:
			f2.write(''.join(data))

Отредактировано koward (Янв. 14, 2016 19:33:22)

Офлайн

#4 Янв. 14, 2016 22:38:52

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

koward
ужас, чем вот это

koward
data =
лучше вот этого
f1.read().replace('.', '\n')
?

koward
path = os.path.join(os.path.dirname(__file__), name_file)
Это ошибочное поведение - а что если вам передали не относительный путь, а абсолютный? Еррор



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Янв. 15, 2016 00:23:31

koward
Зарегистрирован: 2016-01-14
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

JOHN_16
kowardужас, чем вот это
JOHN_16 то что в конце каждой строки ставится точка, возможна она и не нужна пользователю, который создал этот топик

JOHN_16
Это ошибочное поведение - а что если вам передали не относительный путь, а абсолютный? Еррор
Полностью с вами согласен, будет ошибка. Подскажите как нужно было написать, возьму на заметку, я просто недавно начал изучать пайтон, еще не все тонкости знаю.

Отредактировано koward (Янв. 15, 2016 00:24:46)

Офлайн

#6 Янв. 15, 2016 00:51:12

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

koward
ок, я не доглядел. Исправлю. Ну вы же поняли что вопрос остался тот же и да, он больше риторический:

f1.read().replace('.', '.\n')

koward
Подскажите как нужно было написать
да никак, это не проблема конкретно этой функции. Она принимает имя файла name_file и открывает файл с таким именем - а что в этой переменной - только имя файла, абсолютный или вообще сетевой путь не важно. Об этом должен заботиться тот кто вызывает эту функцию.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Янв. 15, 2016 01:37:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

import os
 
with open('file.txt', 'rb') as fin, \
     open('file.out', 'wb') as fout:
    fout.write(fin.read().replace(b'.', b'.\n'))
    os.remove('file.txt')
    os.rename('file.out', 'file.txt')



Офлайн

#8 Янв. 15, 2016 10:30:03

Puten
Зарегистрирован: 2016-01-06
Сообщения: 40
Репутация: +  2  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

py.user.next
Я бы подправил немного:


import os
with open('file.txt', 'rb') as fin, \
     open('file.out', 'wb') as fout:
    fout.write(fin.read().replace(b'.', b'.\n'))
os.remove('file.txt')
os.rename('file.out', 'file.txt')

Иначе вывалится с ошибкой, что файл еще занят.

Отредактировано Puten (Янв. 15, 2016 10:30:39)

Офлайн

#9 Янв. 15, 2016 13:47:14

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Работа с текстовым файлом

Puten
Я бы подправил немного:
Да, забыл я.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version