【发布时间】:2019-04-27 06:35:39
【问题描述】:
我正在使用 Python 从网站上抓取大量评论,对于每条评论,我都会调用“review”函数,然后打开文件并将其附加到其中。它可以工作一段时间,但每次都会出现以下错误,而不是相同的评论。
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'
【问题讨论】:
-
您介意分享完整的回溯吗?
-
是的,我编辑了问题
-
我相信这需要进一步调试,看起来,问题不在于将转储写入文件,而是首先转储抓取的数据,尝试打印抓取的数据以找出是什么导致了问题。
-
您运行的确切 Linux 是什么? Errno 22 可能具有平台相关的含义。我建议运行
man 2 open,并阅读EINVAL消息的描述。我想出的最好的理论是O_APPEND('a') 在某种程度上在您的系统上受到严重支持。尝试使用 ('w'),这将覆盖文件,但如果这有效,那么我们知道问题出在'a'。 -
另一个想法突然出现在我的脑海中:您是在使用多线程或多处理还是从另一个程序查看此文件?所有晦涩的错误的根源是并发;)