kopevgale
Сен. 5, 2016 19:54:09
Количество строк в файле - 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
Надо теперь придать значение этих строк переменным, как я понимаю, и внести в создаваемые файлы, чтобы название файлов были = названиям строк.
Не могу понять, как работать с двумя открытыми файлами (один исходный, а второй создаваемый, куда вносится инфа и потом он закрывается, дале открывается следующий для следующей строки)
py.user.next
Сен. 5, 2016 20:20:30
Сделай функцию, которая принимает строку и делает по ней файл. А потом просто перебираешь строки из первого файла и передаёшь в функцию.
kopevgale
Сен. 5, 2016 21:06:53
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”) # присваиваю строку имени нового файла.
пишет неправильный синтаксис. Но ведь вот ^ это (/") надо чтобы экранировать кавычки и слеш, в чем ошибко?
py.user.next
Сен. 5, 2016 21:59:36
Используй теги кода
Иначе движок стирает многие важные символы из приводимого кода.
py.user.next
Сен. 6, 2016 03:14:23
У функции Elevator пропали пробелы в теле. И там указан символ w перед строкой, тогда как там могут стоять только символы r b f и u иногда.
python.org. dev. string literal
py.user.next
Сен. 6, 2016 13:29:13
marvellik
def record(name, text):
file_name = str(name)+'.txt'
...
Не очень хорошо сделано. Если подаёшь имя файла в функцию, то оно уже должно быть сформировано полностью снаружи (формирователем имени). Так можно имя разными способами формировать, а сохраняться данные будут одним и тем же образом. А так, если надо заменить, например, .txt на .dat, ты уже должен редактировать функцию, чего не должно быть.
kopevgale
Сен. 6, 2016 17:26:09
для самопонимания прокомментю, если ошибаюсь, правьте.
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 ?
marvellik
Сен. 6, 2016 19:47:34
py.user.next
Не очень хорошо сделано.
согласен.спасибо учту.учусь на своих ошибках

. но тогда вопрос а если у меня таких вызовов функции во всем коде штук 50 будет то чтоб изменить расширение мне нужно будет по всему коду бегать менять? мне кажется проще в функции раз изменить.наверно проще в функцию подавать имя, расширение а в функции формировать имя файла с расширением.
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)