2014-01-21 2 views
1

По существу, что я пытаюсь сделать, это прочитать 'n' количество строк из файла, а затем записать их в отдельный файл. Эта программа по существу должна взять файл, который имеет 100 строк и разделить этот файл на 50 отдельных файлов.Скопируйте 'N' строки из одного файла в другой в python?

def main(): 
    from itertools import islice 
    userfile = raw_input("Please enter the file you wish to open\n(must be in this directory): ") 
    file1 = open(userfile, "r+") 
    #print "Name: ", file1.name 
    #print "Closed or not", file1.closed 
    #print "Opening mode: ", file1.mode 
    #print "Softspace flag: ", file1.softspace 
    jcardtop = file1.read(221); 
    #print jcardtop 
    n = 2 
    count = 0 
    while True: 
     next_n_lines = list(islice(file1,n)) 
     print next_n_lines 
     count = count + 1 
     fileout = open(str(count)+ ".txt", "w+") 
     fileout.write(str(jcardtop)) 
     fileout.write(str(next_n_lines)) 
     fileout.close() 
     break 
     if not next_n_lines: 
       break 

У меня также есть файл, чтобы показать, что находится в переменной next_n_lines.

*['\n', "randomtext' more junk here\n"] 

Я хотел бы, вместо того, чтобы выглядеть

randomtext' more junk here 

Является ли это limitatoin функции Ислице? Или мне не хватает части синтаксиса?

Спасибо за ваше время!

+1

Вы говорите, вы не хотите, чтобы быть в списке? Вам просто нужно «.» .join (next_n_lines) '? – nmichaels

+0

@nmichaels Я пытаюсь напечатать (буквально?), В основном символы \ n вытаскиваются из файла чтения (новые строки), и я записываю эти новые строки в отдельный файл. По существу задача состоит в том, чтобы скопировать 2 строки за один раз из файла и вставить их в новый файл. – Mason

ответ

0

Где вы звоните str() или print, вы хотите ''.join(next_n_lines) вместо:

print ''.join(next_n_lines) 

и

fileout.write(''.join(next_n_lines)) 

Вы можете хранить сплющенный строку в переменную, если вы не хотите, чтобы позвонить присоединиться дважды.

0

Вы имели в виду что-то вроде этого?

f = open(userfile,"r") 
start = 4 
n_lines = 100 

for line in f.readlines()[start:(start + n_lines)]: 
    print line 
    #do stuff with line 

или, возможно, это грубый, но эффективный код:

f = open(userfile,"r") 
start = 4 
end = start + 100 

count = start 
while count != end: 
    for line in f.readlines()[count:(count + 2)]: 
     fileout = open(str(count)+ ".txt", "w+") 
     fileout.write(str(line)) 
     fileout.close() 
     count = count + 2 
Смежные вопросы