python-docx salva atributo somente leitura

0

Então, novamente, devo começar pedindo desculpas pelo fato de eu ser um novato completo em Linux, Python e codificação como um todo.

Eu instalei o python-docx para fazer uma tarefa muito simples:

import shutil
from docx import Document

name = 'xxxxxxxxxx'
source_path = r'/home/tye/Documents/xxxxxxxxxx/'
template = r'template_xx'

shutil.copytree(source_path+template, source_path+name)
document = Document(source_path+name+'/correspondence/initial.docx')
paragraph = document.add_paragraph ('helloworld')
document.save=(source_path+name+'/correspondence/initial.docx')

enquanto o bit de cópia da pasta funciona bem, o parágrafo add não funciona. Eu recebo a mesma mensagem toda vez:

'Document' object attribute 'save' is read-only'

Eu tentei executar o arquivo usando sudo no terminal bash, tentei alterar as permissões de usuário no documento. Eu sei que devo estar fazendo algo incrivelmente simples errado, mas eu simplesmente não consigo descobrir o que: (

Grato por qualquer ajuda ...

ps, eu pesquisei esse monte de vezes.

    
por grumpasaur 01.12.2015 / 20:19

1 resposta

1

Isso não tem nada a ver com as permissões do sistema de arquivos Linux, mas é apenas um erro sintático em seu código.

Veja a última linha:

document.save=(source_path+name+'/correspondence/initial.docx')

Isso faz com que o intérprete tente atribuir a string produzida por source_path+name+'/correspondence/initial.docx' à variável de objeto save do objeto document .

Isso é proibido, porque document.save está protegido contra sobrescrevê-lo, o que não faria sentido a propósito.

O que você quer, em vez disso, é chamar a função com a string como argumento!
Para fazer isso, você só precisa remover o símbolo = :

document.save(source_path+name+'/correspondence/initial.docx')

Mais documentação para docx.Document.save pode ser encontrada aqui .

    
por Byte Commander 01.12.2015 / 21:00