OSError:[Errno 22]无效的参数:

时间:2018-11-25 11:54:45

标签: python json

我正在从使用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'

3 个答案:

答案 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()