Python3未引发无效文件名的异常

Python3未引发无效文件名的异常,python,python-3.x,windows,exception,Python,Python 3.x,Windows,Exception,如何让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:

如何让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/子文件夹/某些标题”的文件
请注意,文件名在无效字符处停止

我知道我可以创建自己的异常,如果我检测到一个无效的名称,我可以引发异常,但在这种情况下,这是毫无意义的。我只关心我是否试图在操作系统级别做一些无效的事情。在这种情况下,它似乎悄悄地失败了,我不喜欢这样

编辑:对不起,我想我的问题不清楚。

  • 我想让它创建一个文件,这一部分我很满意
  • 问题是,创建的文件名在 无效字符。我希望整个名字都在那里
  • 我的问题是,为什么python不提出一个异常以便我可以 遇到无效字符时处理它
(感谢eryksun),特别是传递给
open()
的字符串中的
:“
实际上是NTFS系统上的一个分隔符,表示要写入多个数据流:

对于文件名中无效的任何其他字符(例如,
*
),我的代码都可以正常工作。因此,我提出的解决方案是在将文件名中的任何
:“
传递给
open()


”:“
s在文件名中无论如何都是无效的,所以这对我来说没问题。

还有什么其他方法可以用Python创建文件?您正在创建一个新文件;为什么您希望它抱怨,因为它还不存在。如果
os.path.exists(HTML\u DUMP\u DIR\u NAME)
为真,则此代码将引发
NAME错误,因为从未分配
path
。不知怎的,我怀疑这不是真正的代码。“文件还不存在”和“文件名无效的文件”是完全不同的东西。不要使用
w+
它会在不存在时创建一个新文件。
base_file_name= base_file_name.replace(':', '-')