Como inseguro é / substituto para tmpnam?
Pergunta
Eu considerei usando tmpnam
para definir o nome de um QPrinter
arquivo de saída. Mas a documentação Python recomenda contra a usá-lo.
os.tmpnam ()
Retorna um nome de caminho único que é razoável para criar um temporário Arquivo. ... Aplicações são responsáveis para criar e gerenciar adequadamente ficheiros criados com caminhos retornados por tmpnam (); nenhuma limpeza automática é fornecido.
Aviso
O uso de tmpnam () é vulnerável a ataques de link simbólico; considerar o uso de tmpfile () (seção objeto de arquivo Criação) em seu lugar.
Windows: Microsoft de implementação de
tmpnam()
sempre cria um nome no diretório raiz da unidade atual, e isso é geralmente um local pobre para uma temperatura Arquivo (dependendo privilégios, você pode até não ser capaz de abrir um arquivo usando este nome).
- É realmente inseguro se o meu aplicativo não precisa de privilégios especiais?
- Quais são as alternativas seguras, considerando que só posso definir um caminho como o nome do
QPrinter
arquivo de saída?
Solução
Por favor, leia http://docs.python.org/library/tempfile.html
Use esse lugar.
Outras dicas
Dependendo de como seus QPrinter trata de um arquivo que já existe, você poderia usar QTemporaryFile para criar um arquivo, em seguida, feche o arquivo e manter a referência ao objeto QTemporaryFile redor até que você é feito com ele. (Isso também irá limpar o arquivo para você quando você destruir o objeto.)