我正在从使用Python的网站上抓取很多评论,对于每个评论,我都调用“评论”功能,然后打开文件并将其附加到文件中。它可以工作一段时间,但每次都会出现以下错误,而不是同一条评论。
OSError:[Errno 22]无效的参数
我尝试了json.dumps:
scraped_data = reviews(line)
with open('reviews','a' ) as f:
f.write(json.dumps(scraped_data,f,indent = 4))
,但仍然出现相同的错误。我也尝试过json.dump:
scraped_data = reviews(line)
with open('reviews','a' ) as f:
json.dump(scraped_data,f,indent = 4))
,由于某种原因,我也尝试不缩进。
编辑:json.dumps的完整回溯:
Traceback (most recent call last):
File "s.py", line 202, in <module>
with open('reviews','a' ) as f:
OSError: [Errno 22] Invalid argument: 'reviews'
对json.dump的完整追溯:
Traceback (most recent call last):
File "s.py", line 203, in <module>
json.dump(scraped_data,f,indent = 4)
OSError: [Errno 22] Invalid argument: 'reviews'
答案 0 :(得分:5)
在Windows 10上
我在代码中注意到了相同的行为,并且发现我正在使用Microsoft OneDrive,这会导致相同的错误。我尝试打开的文件的文件指针在Windows资源管理器中可见,但内容不可见。您在使用任何云文件共享服务吗?
(我右键单击该文件,选择“始终保留在此设备上”,再次运行相同的代码,它就起作用了。)
答案 1 :(得分:0)
尝试为其提供文件的完整路径。
确保您有权在该目录中写入(无论应用程序在哪个用户下运行)
此外,如果文件尚不存在,则无法附加到文件中...代替a
尝试a+
加号表示如果不存在,则创建它
答案 2 :(得分:-1)
为什么不将文件作为变量打开?
f = open("reviews", "a")
f.write(json.dumps(scraped_data,f,indent = 4))
f.close()