2016-11-01 2 views
1

Как удалить определенную строку из текстового файла с помощью python. Это мой кодКак удалить определенную строку из текстового файла с помощью python

def Delete(): 
    num=int(input("Enter the line number you would like to delete: ")) 
    Del=num-1 

    with open("Names.txt","w") 
+0

Вы можете скопировать содержимое файла в переменную, за исключением строки, которую вы хотите удалить, а затем воссоздать файл. :) –

+0

Обратите внимание, что кто-то может ввести значение нецелого значения ... – RomanPerekhrest

ответ

1

Вы можете сделать это без загрузки всего файла в память:

with open('input.txt', 'r') as f, open('output.txt', 'w') as g: 
    current=0 
    for line in f: 
     if current==deleted: 
      break 
     g.write(line) 
     current=current+1 

    for line in f: 
     g.write(line) 
2

Вы можете использовать itertools.islice прочитать первые N строк и дифферента оттуда. islice работает так же, как и фрагмент списка (например, mylist[0:N:1]), но на любом типе итератора, такого как файловый объект.

import os 
import itertools 

# create test file 
with open('test.txt', 'w') as fp: 
    fp.writelines('{}\n'.format(i) for i in range(1,11)) 

# invent some input 
del_line = int('4') 

# now do the work 
with open('test.txt') as infp, open('newtest.txt', 'w') as outfp: 
    outfp.writelines(itertools.islice(infp, 0, del_line-1, 1)) 
    next(infp) 
    outfp.writelines(infp) 
os.rename('newtest.txt', 'test.txt') 

# see what we got 
print(open('test.txt').read()) 
1

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

badline = int(input('which line do you want to delete?')) 

with open('fordel.txt') as f, open('out.txt', 'w') as fo: 
    for linenum, line in enumerate(f, start=1): 
     if linenum != badline: 
      fo.write(line) 
Смежные вопросы