Я пытаюсь записать каждую строку в файл. Скажем, моя программа выводит следующее:
A man a bird a tree
A sleek ball in the terminal
We have our guests waiting
Я хочу, чтобы каждая строка записывалась в новый файл или базу данных. Я предполагаю, что концепция та же.
def break(tmp_file):
n = 50
with open(tmp_file) as c:
out = []
for line in c:
for word in line.split():
out.append(word)
if word.endswith(('.', '!')) and len(out) >= n:
print(' '.join(out))
print("\n\n")
f = open('save_file', "w+")
f.write(out)
f.close()
del out[:]
# don't forget to flush the buffer
if out:
print(' '.join(out))
На данный момент он сохраняет все строки в один и тот же файл. Я ожидаю, что он будет сохранен в уникальный файл, например:
Line1 - unique_file_1
Line2 - unique_file_2
...
Как изменить имена файлов во время работы скрипта?
Текст говорит что-то (каждую строку записывайте в отдельный файл), код делает что-то еще (разделяет строки, содержащие .
или !
или длиннее 50 слов), и вы даже не говорите, как следует называть разные файлы. Какую помощь вы ожидаете? Неудивительно, что вы получаете очень разные ответы, потому что каждый или мы понимаем разные вопросы :-(
Мой код разделен на строки, содержащие . or !
Как записать каждую строку в файл, используя дату и время для уникальности.
Используйте enumerate
Бывший:
def break(tmp_file):
n = 50
with open(tmp_file) as c:
out = []
for ind, line in enumerate(c, 1):
for word in line.split():
out.append(word)
if word.endswith(('.', '!')) and len(out) >= n:
print(' '.join(out))
print("\n\n")
f = open('Line{} - unique_file_{}'.format(ind), "w+") #File name as requested
f.write(out)
f.close()
del out[:]
# don't forget to flush the buffer
if out:
print(' '.join(out))
Спасибо, это перечисление показывает «индекс кортежа вне допустимого диапазона». Есть ли для этого причина?
Проблема в том, что вы сохраняете результаты в одном и том же файле save_file
, вы можете попробовать что-то вроде этого.
import datetime
n = 50
with open("infile") as c:
out = []
for line_number, line in enumerate(c):
for word in line.split():
out.append(word)
if word.endswith(('.', '!')) and len(out) >= n:
print(' '.join(out))
print("\n\n")
if out:
f = open(str((line_number+1).txt), "w+")
f.write(' '.join(out))
f.close()
del out[:]
# don't forget to flush the buffer
if out:
print(' '.join(out))
как бы вы предложили мне сохранить имена файлов следующим образом: 01.txt, 02.txt, 03.txt ..
Вы можете использовать перечисление для этого. Или иметь переменную счетчика.
Работал. Спасибо.
Разве вы не должны просто изменить имя выходного файла?