Python 3中不是无效的文件名提高例外

问题描述 投票:1回答:1

我怎样才能让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)

假设路径的值是'Folder1/SubFolder/Some Title: thing.html'和文件尚不存在。

我想到的是,Python会引发与无效的参数,或者类似的东西的OSerror。而实际上,它创建了一个名为'Folder1/Subfolder/Some Title'文件。请注意文件名停止在无效字符

我知道我可以创建自己的异常,如果我发现一个无效的名字,我可以养,但在这种情况下,这是没有意义的。我只关心我试图做一些事情在操作系统级别无效。看来在这种情况下,它静静地失败,我不喜欢这样。

编辑:对不起,我想我的问题不明确。

  • 我不希望它创建一个文件,这部分我很高兴。
  • 问题是,时生成的文件名的无效字符停止。我想整个的名字在那里。
  • 我的问题是,为什么Python引发异常,所以我可以处理它,当它遇到无效字符
python python-3.x windows exception
1个回答
2
投票

因此,原来(感谢eryksun),特别是在字符串中传递给实际':'open()是上表示要写入多个数据流NTFS系统的分隔符:

我的代码用于其他任何字符,文件名无效(*例如)工作正常。所以,我想出了一个解决方案是将':'替换任何-在我的文件名之前我将它传递给open()

base_file_name= base_file_name.replace(':', '-')

':'s是无效的文件名反正所以这是为我好。

© www.soinside.com 2019 - 2024. All rights reserved.