Я предполагаю, что здесь есть несколько переменных, но давайте начнем с теста. Во-первых, вам не нужно «издеваться над этим», потому что вы запускаете тест Jasmine через Karma, который загружает какую-то форму браузера. Надеюсь, вы используете PhantomJS
вместо чего-то вроде Chrome
.
Но давайте начнем с PhantomJS
. Код для вашего теста должен выглядеть примерно так:
it ('should download something', function() {
scope.download(1);
expect(window.location).toBeDefined();
expect(window.location).toBe('some static URL that it should be');
});
Однако вам нужно исправить инициализацию для вашего контроллера. Вы должны убедиться, что вы можете удовлетворить эту строку:
var href = window.location.href.split('/');
Это означает, что при создании вашего контроллера здесь:
ProcedureController = $controller('ProcedureController', {
вам понадобится чтобы установить window.location
на что-то перед выполнением $controller
, чтобы он правильно сгенерировал переменную url
.
Теперь, если вы используете Chrome
, вы, вероятно, увидите реальное движение в браузере. Я не думаю, что это вызовет проблемы, но это просто не обязательно. Лучше всего использовать PhantomJS
, чтобы вы могли запускать те тесты в консоли.
Похоже, я нашел ответ:
Важным моментом здесь было создание нового файла, если он не найден, или иное редактирование уже существующего файла. [112 ] blockquote>
import os from docx import Document #checking if file already present and creating it if not present if not os.path.isfile(r"file_path"): #Creating a blank document document = Document() #saving the blank document document.save('file_name.docx') #------------editing the file_name.docx now------------------------ #opening the existing document document = Document('file_name.docx') #editing it document.add_heading("hello world" , 0) #saving document in the end document.save('file_name.docx')
Дальнейшие изменения / предложения приветствуются.
Вероятно, самый безопасный способ открыть (и обрезать) новый файл для записи - использовать режим 'xb'
. 'x'
вызовет FileExistsError
, если файл уже существует. 'b'
необходим, потому что текстовый документ по сути является двоичным файлом: это zip-архив с XML и другими файлами внутри него. Вы не можете сжимать и распаковывать zip-файлы, если конвертируете байты с помощью кодировки символов.
Document.save
принимает потоки, поэтому вы можете передать файл, открытый таким образом, чтобы сохранить ваш документ.
Ваш рабочий процесс может выглядеть примерно так:
doc = docx.Document(...)
...
# Make your document
...
with open('outfile.docx', 'xb') as f:
doc.save(f)
Хорошая идея - использовать блоки with
вместо raw open
, чтобы обеспечить правильное закрытие файла даже в случае ошибка.
Точно так же, как вы не можете просто записать файл Word напрямую, вы также не можете добавить его. Способ «добавить» - открыть файл, загрузить объект Document
, а затем записать его обратно, переписав исходный контент. Поскольку файл word представляет собой zip-архив, весьма вероятно, что добавленный текст даже не будет находиться в конце файла XML, в котором он находится, а тем более всего файла docx:
doc = docx.Document('file_to_append.docx')
...
# Modify the contents of doc
...
doc.save('file_to_append.docx')
Имейте в виду, библиотека python-docx может не поддерживать загрузку некоторых элементов, что может привести к окончательному удалению при сохранении файла таким образом.