Найти - Пользователи
Полная версия: Количество строк - N . Надо, чтобы стало количество файлов- N
Начало » Python для новичков » Количество строк - N . Надо, чтобы стало количество файлов- N
1 2
kopevgale
Количество строк в файле - 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
Сделай функцию, которая принимает строку и делает по ней файл. А потом просто перебираешь строки из первого файла и передаёшь в функцию.
kopevgale
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
Используй теги кода
[code python][/code]
Иначе движок стирает многие важные символы из приводимого кода.
kopevgale
http://pastebin.com/SRkjEa3d
 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
У функции Elevator пропали пробелы в теле. И там указан символ w перед строкой, тогда как там могут стоять только символы r b f и u иногда.
python.org. dev. string literal
marvellik
 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)
py.user.next
marvellik
  
def record(name, text):
    file_name = str(name)+'.txt'
    ...
Не очень хорошо сделано. Если подаёшь имя файла в функцию, то оно уже должно быть сформировано полностью снаружи (формирователем имени). Так можно имя разными способами формировать, а сохраняться данные будут одним и тем же образом. А так, если надо заменить, например, .txt на .dat, ты уже должен редактировать функцию, чего не должно быть.
kopevgale
для самопонимания прокомментю, если ошибаюсь, правьте.
  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
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)
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