Ниже приведен короткий ответ: https://wiki.python.org/moin/TimeComplexity
Без аргументов, чтобы поп его O (1)
С аргументом pop:
Средняя временная сложность:
Амортизированная худшая временная сложность случая
Худшая временная сложность случая
Быстрый и простой способ, который вам определенно не следует делать (см. Ниже), заключается в том, чтобы прочитать весь файл в виде списка строк с помощью readlines ()
. Я пишу это на случай, если вы ищете быстрое и простое решение.
Просто откройте файл с помощью open ()
, затем вызовите метод readlines ()
. Вы получите список всех строк в файле. Теперь вы можете легко добавлять строки перед последним элементом (просто добавьте в список один элемент перед последним). В заключение, вы можете записать их обратно в файл с помощью Writelines ()
.
Пример может помочь:
my_file = open(filename, "r")
lines_of_file = my_file.readlines()
lines_of_file.insert(-1, "This line is added one before the last line")
my_file.writelines(lines_of_file)
Причина, по которой вам не следует этого делать, заключается в том, что, если вы не делаете что-то очень быстро n 'грязный, вы должны использовать синтаксический анализатор XML. Это библиотека, которая позволяет разумно работать с XML, используя такие концепции, как DOM, деревья и узлы. Это не только правильный способ работы с XML, но и стандартный способ, который делает ваш код более переносимым и более легким для понимания другими программистами.
В ответе Тима упоминается проверка xml.dom.minidom
для этой цели, что, на мой взгляд, было бы отличной идеей.
В ответе Тима упоминается проверка xml.dom.minidom
для этой цели, что, на мой взгляд, было бы отличной идеей.
В ответе Тима упоминается проверка xml.dom.minidom
для этой цели, что, на мой взгляд, было бы отличной идеей.
While I agree with Tim and Oben Sonne that you should use an XML library, there are ways to still manipulate it as a simple string object.
I likely would not try to use a single file pointer for what you are describing, and instead read the file into memory, edit it, then write it out.:
inFile = open('file.xml', 'r')
data = inFile.readlines()
inFile.close()
# some manipulation on `data`
outFile = open('file.xml', 'w')
outFile.writelines(data)
outFile.close()
Useful Python XML parsers:
Any of those is better than trying to update the XML file as strings of text.
What that means to you:
Open your file with an XML parser of your choice, find the node you're interested in, replace the value, serialize the file back out.
Что вы действительно хотите сделать, так это использовать синтаксический анализатор XML и добавить новые элементы с предоставленным API.
Затем просто перезапишите файл.
Самым простым в использовании, вероятно, будет парсер DOM, подобный приведенному ниже:
Вы должны прочитать XML-файл, используя конкретные модули XML. Таким образом, вы можете редактировать XML-документ в памяти и переписывать измененный XML-документ в файл.
Вот краткое руководство: http://docs.python.org/library/xml.dom.minidom. html
Существует множество других XML-утилит, и какая из них лучше всего зависит от характера вашего XML-файла и от того, каким образом вы хотите его редактировать.
Чтобы сделать этот процесс более надежным, вы можете рассмотреть возможность использования синтаксического анализатора SAX (таким образом вам не нужно хранить весь файл в памяти), чтения и записи до конца дерева и затем начните добавлять.