我如何让Python在打开具有无效文件名的文件时引发异常?例如,我有这段代码
def write_html_to_file(set_name, pid, html_text):
if not os.path.exists(HTML_DUMP_DIR_NAME):
os.makedirs(HTML_DUMP_DIR_NAME)
path = (HTML_DUMP_DIR_NAME + set_name + '-' + pid + '.html')
try:
with open(path, "w+", encoding='utf-8') as html_dump_file:
html_dump_file.write(html_text)
except OSError as e:
logging.basicConfig(filename=LOG_FILE_PATH, level=logging.ERROR)
logging.error('Failed to create html dump. '
+ ' error=' + e
+ ' file_name=' + path)
假设path的值为'Folder1/SubFolder/Some Title: thing.html'
,并且该文件尚不存在。
我期望Python将使用无效参数或类似的参数引发OSerror
。 实际发生的情况是它创建了一个名为'Folder1/Subfolder/Some Title'
的文件。 注意文件名以无效字符结尾
我知道我可以创建自己的异常,如果检测到无效名称,可以引发该异常,但是在这种情况下,这毫无意义。我只关心是否要在操作系统级别上做一些无效的事情。在这种情况下,它似乎无声地失败了,我不喜欢这样。
编辑:对不起,我想我的问题不清楚。
答案 0 :(得分:2)
事实证明(感谢eryksun),尤其是传递给':'
的字符串中的open()
实际上是NTFS系统上的分隔符,表示您要写入多个数据流: / p>
我的代码对于文件名无效的任何其他字符(例如,*
)都可以正常工作。因此,我想出的解决方案是在将文件名中的任何':'
传递给-
open()
替换它。
base_file_name= base_file_name.replace(':', '-')
':'
的文件名仍然无效,所以这对我来说很好。