这两天在写一个新闻类的spider时,遇到了OSError: [Errno 22] Invalid argument这个错误,苦恼的两天,无果。后来通过请教学长,发现原来是打开的文件名中含有一些系统的敏感字符,结果就报错了。看一段简单的代码:
1 title = '把我看成新闻的*标题吧。'
2 contetn = '就把我看成是新闻的内容吧!!!'
3 with open(title+'.txt', 'a', encoding='utf-8') as f:4 f.write(contetn)5
6 #报错内容如下:
7 #Traceback (most recent call last):
8 #File "E:/py project/my_spider/east_money/test2.py", line 3, in
9 #with open(title+'.txt', 'a', encoding='utf-8') as f:
10 #OSError: [Errno 22] Invalid argument: '把我看成新闻的*标题吧。.txt'
可以看出,报错的内容在第三行,错误提示是无效的参数,观察一下第三行的代码,猜想应该是title里面的内容存在错误,试着把里面的那个 ‘*’ 去掉,结果报错没有了。原来,windows下文件命名的时候不能含有一些特殊的字符,要不会与系统冲突,网上搜了一下,共有九个敏感字符,分别是 ? * : " < > \ / | 。这些字符在系统中都有特殊的作用