Python3未引发无效文件名的异常
如何让Python在打开文件名无效的文件时引发异常?例如,我有这个代码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:
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不提出一个异常以便我可以 遇到无效字符时处理它
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(':', '-')