【发布时间】:2019-06-27 18:09:06
【问题描述】:
如何让 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 会使用 Invalid Arguments 或类似的东西引发 OSerror。 实际发生的情况是它创建了一个名为 'Folder1/Subfolder/Some Title' 的文件。 注意文件名在无效字符处停止
我知道我可以创建自己的异常,如果我检测到无效名称,我可以引发这些异常,但在这种情况下,这是没有意义的。我只关心我是否试图在操作系统级别做一些无效的事情。在这种情况下,它似乎默默地失败了,我不喜欢那样。
编辑:抱歉,我想我的问题不清楚。
- 我确实希望它创建一个文件,这让我很高兴。
- 问题是创建的文件名停止在 无效字符。我希望整个名字都在那里。
- 我的问题是,为什么 python 不引发异常,所以我可以 遇到无效字符时处理
【问题讨论】:
-
在 Python 中创建文件还有什么其他方法?
-
您正在创建一个新文件;你为什么期望它抱怨,因为它还不存在。
-
如果
os.path.exists(HTML_DUMP_DIR_NAME)为真,此代码将引发NameError,因为从未分配过path。不知何故,我怀疑这不是真正的代码。 -
“文件不存在”和“文件名无效的文件”是完全不同的东西。
-
不要使用
w+,它会在它不存在时创建一个新文件。
标签: python python-3.x windows exception