Python文件操作错误:OSError: [Errno 22] Invalid argument(关于Windows下文件名中的敏感字符)
为啥会写这篇文章呢,简单说一下,我在学习如何使用爬虫爬取小视频,然后将小视频进行持久化存储
记录一点小知识,如果有帮助,还请留下脚印~~
为啥会写这篇文章呢,简单说一下,我在学习如何使用爬虫爬取小视频,然后将小视频进行持久化存储,最后发现报错了😮我一看,是OSError,也就是说我持久化存储那里有问题。
为了更好的记录,我根据这个问题重新写了几行代码,我们一起来看看代码👇
title = '这是一个带有特殊符号|的标题'
content = '这是内容!'
with open(title + '.txt', 'a', encoding='utf-8') as fp:
fp.write(content)
报错内容如下👇
Traceback (most recent call last):
File "关于windows下文件名中的敏感字符.py", line 3, in <module>
with open(title + '.txt', 'a', encoding='utf-8') as fp:
OSError: [Errno 22] Invalid argument: '这是一个带有特殊符号|的标题.txt'
👉OSError: [Errno 22] Invalid argument: '这是一个带有特殊符号|的标题.txt'👈
就是这个,错误提示是无效的参数,莫慌,分析一下,首先我们是在Windows下创建一个txt文本文件,我们去桌面新建一个文本文件,然后命名就为'这是一个带有特殊符号|的标题.txt',看看会发生啥👇
有个提示:文件名不能包含下列任何字符:\ / : * ? " < > | ,这些红色字体的字符,都是不允许在文件名中包含的。
该怎么解决呢,这简单呀,把 | 这个符号换掉不就可以了?我们来试一下:
title = '这是一个带有特殊符号|的标题'.replace('|', 'Y') # 尝试用replace()函数替换掉 ‘|’ 字符
content = '这是内容!'
with open(title + '.txt', 'a', encoding='utf-8') as fp:
fp.write(content)
这里使用replace()函数将这个特殊字符‘ | ’替换掉(这里为了区分,我换成“Y”),然后然后,运行成功了!
可以看到已经创建了txt文件。这个时候可能就会有小伙伴问了,如果我不知道是这些字符中的哪个呢?好问题,来,咱们继续唠嗑。
很简单,这个时候可以用到一个循环遍历替换的方法来解决👇
这次我给title增加了几个特殊字符
title = '这是一个?带\有/特:殊*符"号|的标题'
content = '这是内容!'
character = '\/:*?"<>|'
for s in character:
if s in title:
print(s) # 打印特殊字符
title = title.replace(s, 'Y') # 替换成“Y”
print(title) # 打印替换后的title
with open(title + '.txt', 'a', encoding='utf-8') as fp:
fp.write(content)
依次遍历字符串,然后利用 if来判断title中是否存在敏感字符,如果存在,则使用replace()函数将特殊字符替换掉(这里为了区分,我换成“Y”)。
运行结果如下:
很好,没有BUG!将前后title对比一下:
运行前title:这是一个?带\有/特:殊*符"号|的标题
运行后title:这是一个Y带Y有Y特Y殊Y符Y号Y的标题
很好,完美解决,散会!
更多推荐
所有评论(0)