Найти - Пользователи
Полная версия: задача по текстовому файлу
Начало » Центр помощи » задача по текстовому файлу
1 2
rover
помогите решить:
дано целое число К и текстовый файл. Вставить пустую строку после строки файла с номером К.
python4ik
Немного подзабыл Питон :) , но может как-то так? :
f = open('1.txt' , 'r')

l = f.readlines() #сохранение содержимого файла в список
i = input() #необходимая строка

l.insert(i+1 , '\n') #вставляется пустая строка

f = open('1.txt' , 'w') #открытие для записи резул-та

for x in l:
f.write(x)

f.close()
Ed
Откуда это повальное стремление засосать весь файл в память? Кроме того очевидного факта, что файлы бывают большими и в память банально не влезут непонятно вообще зачем это делать-то? Читаем из одного построчно, пишем в другой. потом переименовываем в конце и все. Как пример с чтением файлов, так readlines, прям болезнь какая-то, извините.
python4ik
f1 = open('1.txt' , 'r')
f2 = open('2.txt' , 'w')

i = input()
n = 0

for x in f1.xreadlines():
f2.write(str(x))
if n == i:
f2.write('\n')
n += 1

f1.close()
f2.close()
rover
класс, спасибо python4ik, за простой код с комментариями.
только надо было добавить i = int(input()), так как input() по умолчанию возвращает переменную в строковом типе и без int() прога не работала
Ed
совсем другое дело. Только скрипач, то бишь xreadlines() не нужен. Все-таки это болезнь :)
python4ik
а почему? скрипач xreadlines() не нужен. Ведь как я помню, он вроде читает не весь файл в память, а по строчно, экономя память!
Если честно, даже не заглядывал в нете на описание xreadlines() . По памяти (не спорю , могу ошибаться!) .

спасибо python4ik
Та это я так, чтобы не забыть язык! :) тренируюсь!
так как input() по умолчанию
это код для Питона 2.6 .В нём input() возврашает целое число!
Ed
xreadlines конечно лучше, чем readlines, но он просто избыточен. Достаточно было написать for x in f1. Это известная идиома цикла чтения по строкам. Кроме того str(x) в вашем коде тоже избыточен, поскольку x и так строка. Ну и с нумерацией нужно бы уточнить. Вряд ли в задании ‘после строки файла с номером К’ означает нумерацию с нуля, как в вашем коде. Скорее с единицы.
rover
помагите еще с одной задачей:
дан текстовый файл. вывести последнее слова текста наимеьшей длины. Словом считать набор символов, не содержащий пробелов и ограниченный пробелами или началом/концом строки.

вот мой код, только он выводит ошибочно:

f=open('text/text30.txt','r')

l=f.readlines()
leng=len(l)
for i in l:
s=i.split()
buf=len(min(s))
if buf<=leng:
leng=buf
print (leng)
rover
вот сделал, думаю это более оптимальный код, чем код выше
f=open('text/text30.txt','r')

leng=len(str(f))
for i in f:
s=i.split()
for i in s:
if len(i)<=leng:
leng=len(i)
print(leng)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB