функция del не работает в python

Я новичок в python, и у меня возникли проблемы с удалением некоторых элементов из списка с помощью функции del. Я передаю ему простой текстовый файл с несколькими строками, создаю список строк, используя splitlines(), а затем пытаюсь удалить первые несколько элементов, используя del.

Однако, когда я запускаю его, он просто распечатывает список без удаления строки. Однако я могу удалить все, используя del inputfile[:]. Он не выдает ошибок, и я немного застрял.

class Zero_Check(object):

    def __init__(self):
        self.path2file='C:\File2check\Output.txt'        

    def Parser(self):
        print('parser')

        inputfile = open(self.path2file).read().splitlines()
        del inputfile[4]
        print(inputfile)

        #for line in inputfile:
         #   print(line)

if __name__=='__main__':

    check=Zero_Check().Parser()

Том на диске C — серийный номер тома OSDisk — F0A9-9FB7.

Каталог C:\File2check

08/10/2015 16:36 .

08/10/2015 16:36 ..

10.08.2015 16:28 0 1.txt

10.08.2015 16:28 0 10.txt

10.08.2015 16:28 0 11.txt

10.08.2015 16:31 2 411 884 12.txt

10.08.2015 16:31 2 411 884 13.txt

10.08.2015 16:31 2 411 884 14.txt

10.08.2015 16:31 2 411 884 15.txt

...

выход -

[' Volume in drive C is OSDisk', ' Volume Serial Number is F0A9-9FB7', '', ' Directory of C:\\File2check', '08/10/2015  16:36    <DIR>          .', '08/10/2015  16:36    <DIR>          ..', '08/10/2015  16:28                 0 1.txt', '08/10/2015  16:28                 0 10.txt', '08/10/2015  16:28                 0 11.txt', '08/10/2015  16:31         2,411,884 12.txt', '08/10/2015  16:31         2,411,884 13.txt', '08/10/2015  16:31         2,411,884 14.txt', '08/10/2015  16:31         2,411,884 15.txt', '08/10/2015  16:31         2,411,884 16.txt', '08/10/2015  16:31         2,411,884 17.txt', '08/10/2015  16:33         1,457,843 18.txt', '08/10/2015  16:31         2,411,884 19.txt', '08/10/2015  16:28                 0 2.txt', '08/10/2015  16:31         2,411,884 20.txt', '08/10/2015  16:31         2,411,884 21.txt', '08/10/2015  16:33         1,457,843 22.txt', '08/10/2015  16:33         1,457,843 23.txt', '08/10/2015  16:33         1,457,843 24.txt', '08/10/2015  16:28                 0 3.txt', '08/10/2015  16:28                 0 4.txt', '08/10/2015  16:28                 0 5.txt', '08/10/2015  16:28                 0 6.txt', '08/10/2015  16:28                 0 7.txt', '08/10/2015  16:28                 0 8.txt', '08/10/2015  16:28                 0 9].txt', '08/10/2015  16:36                 0 Output.txt', '              25 File(s)     27,538,328 bytes', '               2 Dir(s)  593,421,463,552 bytes free']

person Sam Little    schedule 08.10.2015    source источник
comment
Вам действительно не нужен класс, простая функция должна делать: def zero_check_parser(file_path): (переименуйте функцию, как вам угодно).   -  person Markus Meskanen    schedule 08.10.2015
comment
Более того, del — это не функция, а оператор.   -  person ForceBru    schedule 08.10.2015
comment
Файл выглядит как вывод команды dir на выводе Windows, как показано выше, и желаемый вывод представляет собой список, который содержит списки каждой строки, проанализированной символом пробела. Я все еще хотел бы знать, почему del не работает, хотя для моего обучения :)   -  person Sam Little    schedule 08.10.2015
comment
И используйте readlines() вместо read().splitlines(): inputfile = open(self.path2file).readlines()   -  person Christian Alis    schedule 08.10.2015
comment
Вы уверены, что не удаляете? Я вижу 3-й элемент в пустой строке, что заставляет меня думать, что у вас их два, и один был удален! Попробуйте удалить первый элемент ( del inputfile[0] ) и посмотрите, работает ли он?   -  person kakhkAtion    schedule 08.10.2015
comment
Он удалил четвертый элемент, который является пустой строкой (смотря на вывод dir)   -  person Peter Wood    schedule 08.10.2015
comment
Закомментируйте del и сравните напечатанный список. Вы увидите дополнительную пустую строку после Directory.... Помните, индексы списка отсчитываются от нуля.   -  person tdelaney    schedule 08.10.2015
comment
Третий элемент — это просто пустая строка, потому что третья строка пуста. попробовал del inputfile[0] и все равно ничего не удалил.   -  person Sam Little    schedule 08.10.2015
comment
@MarkusMeskanen это может быть фрагмент более крупного класса или он может следовать сигнатуре класса по другим причинам.   -  person tdelaney    schedule 08.10.2015
comment
@PeterWood Я так не думаю. Я проверил вывод кода с помощью строки del и закомментировал его, и они идентичны. Некоторые строки пусты из-за того, что строка ввода пуста. РЕДАКТИРОВАТЬ - Извините! Я вижу это сейчас. Да, ты прав! Спасибо   -  person Sam Little    schedule 08.10.2015
comment
Боковое примечание: используйте необработанные строки для путей Windows при использовании обратной косой черты, или это укусит вас когда-нибудь, когда вы попытаетесь открыть файл в C:\foo\bar, который существует, но обратный слеш означает, что он пытается открыть файл в C:\foo<ASCII backspace>ar. Необработанные строки создаются путем добавления к строке префикса r, например. r'C:\File2check\Output.txt'.   -  person ShadowRanger    schedule 08.10.2015


Ответы (1)


Не нужно создавать класс для простой работы

def delete():
    with open('C:\File2check\Output.txt') as f:
        lines = f.readlines()
        print(lines)
        del lines[4]
        print(lines)
person Randomazer    schedule 08.10.2015