python-3.x - 更改 tempfile.NamedTemporaryFile 的字符集

标签 python-3.x

我正在编写一个 python3 程序,该程序生成一个文本文件,该文件使用 asciidoc 进行后处理以生成 html 和 pdf 格式的最终​​报告。

python 程序生成数千个包含图形的文件,这些文件将包含在最终报告中。文件的文件名是用 tempfile.NamedTemporaryFile 生成的

问题在于临时文件使用的字符集定义为:

字符 = "abcdefghijklmnopqrstuvwxyz0123456789_"

然后我以一些名为“_6456_”的文件结尾,asciidoc 将“_”解释为格式并插入一些破坏报告的 html。

我需要找到一种方法来“转义”asciidoc 中的文件名或控制临时文件中的字符。

我目前的解决方案是在关闭临时文件后重命名临时文件,用其他字符替换“_”(不在临时文件使用的字符列表中以避免冲突)但我觉得有一个更好的方法。

我将不胜感激任何想法。我还不是很精通 python,我认为在临时文件中重载 _RandomNameSequence 会起作用,但我不确定该怎么做。

问候。

最佳答案

Hack 方式,基于操作 tempfile 内部结构:

class MyRandomSequence(tempfile._RandomNameSequence):
    characters = "xyz123"

tempfile._name_sequence = MyRandomSequence()
# make your temporary file

例子:

>>> tempfile.NamedTemporaryFile()
<open file '<fdopen>', mode 'w+b' at 0x1013b5540>
>>> k=_
>>> k.name
'/var/folders/Su/SuMQtmxiE941sUwe8d91lE+++TU/-Tmp-/tmp33x22z'

关于python-3.x - 更改 tempfile.NamedTemporaryFile 的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12522844/

相关文章:

python-3.x - 如何使用 matplotlib 绘制半圆

python - str。包含在pandas数据框中创建新列

python - 无法从网页上抓取所有公司名称

python - 从其中包含 return <value> 语句的生成器中产生

python - 创建一个名称与列表中项目名称相同的变量

python - map 对象不是 JSON 可序列化的

python - cx_freeze : How do I resolve conflicts caused by multiple . 同名dylib文件

python - 如何将鼠标按钮选择存储在列表中?

python - 在一行中使用 for 循环制作一个新集合

python - 使用 Surprise SVD++ 算法获取所有用户的预测