Форум сайта python.su
Количество строк в файле - N . Надо, чтобы стало количество файлов- N,
при этом в содержании файла 1 будет строка 1 из первичного файла,
в содержании файла 2 будет строка 2 из первичного файла,
в содержании файла N будет строка N из первичного файла.
Количество строк известно, как понимаю, надо зациклить создание файлов и добавление в них строк,
укажите направление. Пока есть вот что:
F = open('C:\Users\Tesha\Documents\cat2.txt')
line = F.readline()
print line
line = F.readline()
print line
это выводит мне первую и вторую строки в файле:
fewgawerg
dfewfwrg
Надо теперь придать значение этих строк переменным, как я понимаю, и внести в создаваемые файлы, чтобы название файлов были = названиям строк.
Не могу понять, как работать с двумя открытыми файлами (один исходный, а второй создаваемый, куда вносится инфа и потом он закрывается, дале открывается следующий для следующей строки)
Отредактировано kopevgale (Сен. 5, 2016 19:56:00)
Офлайн
Сделай функцию, которая принимает строку и делает по ней файл. А потом просто перебираешь строки из первого файла и передаёшь в функцию.
Офлайн
F = open('C:\Users\Tesha\Documents\cat2.txt')
line = F.readline()
print line
line = F.readline()
print line
def Elevator(name, text):
name = open(w“C:\Users\Tesha\Documents\/” ,line “.txt”) # присваиваю строку имени нового файла.
пишет неправильный синтаксис. Но ведь вот ^ это (/") надо чтобы экранировать кавычки и слеш, в чем ошибко?
Офлайн
Используй теги кода
[code python][/code]
Отредактировано py.user.next (Сен. 5, 2016 22:00:03)
Офлайн
F = open('C:\Users\Tesha\Documents\cat2.txt') line = F.readline() print line # смотрю выдает ли первую строку line = F.readline() print line # смотрю выдает ли вторую строку def Elevator(name, text): name = open(w"C:\Users\Tesha\Documents\/" ,line ".txt") # присваиваю строку имени новому файлу.
Офлайн
У функции Elevator пропали пробелы в теле. И там указан символ w перед строкой, тогда как там могут стоять только символы r b f и u иногда.
python.org. dev. string literal
Отредактировано py.user.next (Сен. 6, 2016 03:18:18)
Офлайн
def record(name, text): file_name = str(name)+'.txt' with open(file_name, 'w') as f: f.write(text) with open('filename.txt') as f: # 'filename.txt'-ваш первый файл file_list_1 = f.readlines() for name, text in enumerate(file_list_1): record(name+1, text)
Отредактировано marvellik (Сен. 6, 2016 12:52:19)
Офлайн
marvellikНе очень хорошо сделано. Если подаёшь имя файла в функцию, то оно уже должно быть сформировано полностью снаружи (формирователем имени). Так можно имя разными способами формировать, а сохраняться данные будут одним и тем же образом. А так, если надо заменить, например, .txt на .dat, ты уже должен редактировать функцию, чего не должно быть.def record(name, text): file_name = str(name)+'.txt' ...
Отредактировано py.user.next (Сен. 6, 2016 13:31:43)
Офлайн
для самопонимания прокомментю, если ошибаюсь, правьте.
def record(name, text): file_name = str(name)+'.txt' # создание имени в пресловутых файлов, name как строка with open(file_name, 'w') as f: # создание файла собсно f.write(text) # запись в файл with open('filename.txt') as f: # 'filename.txt'-ваш первый файл file_list_1 = f.readlines() for name, text in enumerate(file_list_1): record(name+1, text) # все следующие файлы будут name+1 ?
Офлайн
py.user.nextсогласен.спасибо учту.учусь на своих ошибках
Не очень хорошо сделано.
kopevgaleвообщем то да но как заметил quote=py.user.next действительно в функцию нужно подавать готовое имя
для самопонимания прокомментю
def record( name, expansion, text): file_name = '{}.{}'.format(name, expansion) # или file_name = name+'.'+ expansion with open(file_name, 'w') as f: f.write(text) with open('filename.txt') as f: # 'filename.txt'-ваш первый файл file_list_1 = f.readlines() # получаем список строк из файла expansion = 'txt' # задаем расширение будущих файлов for name, text in enumerate(file_list_1): # name это индекс элемента (строки) из списка строк из файла, text-сама строка name = str(name+1) #преобразуем число в строку и подаем как имя в функцию record(name, expansion, text)
Отредактировано marvellik (Сен. 6, 2016 19:48:13)
Офлайн