我正在编写一个 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/