我正在尝试在我的csv文件中添加额外的列。为此,我使用了下一个函数,但它显示以下错误。
vechainofficial_tweets.csv
Traceback (most recent call last):
File "abc.py", line 22, in <module>
row=next(reader)
StopIteration异常
import csv
import os
import glob
from textblob import TextBlob
path=''
extension='csv'
os.chdir('./')
results=[i for i in glob.glob('*.{}'.format(extension))]
# print(result)
for result in results:
print(result)
with open(result,'r') as csvfile:
with open(result,'w') as csv1:
writer=csv.writer(csv1,lineterminator='\n')
reader=csv.reader(csvfile)
all=[]
row=next(reader)
row.append('Sentiment')
all.append(row)
for row in reader:
row.append(TextBlob(row[2]).sentiment)
all.append(row)
writer.writerows(row)
print("success")
请帮我解决这个问题。
答案 0 :(得分:0)
StopIteration
错误表示您呼叫generator
的{{1}}为空。因此,在您的情况下,next()
生成器为空,因此在您调用reader
时会抛出错误。
因此,要解决此问题,您需要确保文件next(reader)
在打开时实际上是result
。
您可以通过发出嵌套的CSV
语句并将其替换为with
来简单地执行此操作,这将使程序打印每个print(csvfile.read())
文件的内容。
然后,只需分析输出就可以看出出了什么问题。
答案 1 :(得分:0)
首先,您正在尝试写入您正在阅读的文件。您的代码会打开x=np.linspace(0, 2*math.pi,100)
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(figsize=(10,5))
plt.yticks(np.arange(-1,1.25,0.25))
plt.xticks(np.arange(0, 7, 1))
plt.plot(x,np.cos(x),'r',label="sine")
plt.plot(x,np.sin(x),'b',label="cosine")
plt.xlabel('x (in radians)')
plt.legend(loc=3)
两次,一次针对读者,一次针对编写者。文本文件不会那样工作。您需要打开一个文件进行输入,打开另一个文件进行输出。
其次,result
不会为您的文件添加列。它移动到输入文件的下一条记录。如果您使用next()
的内置迭代,则需要一个很好的理由来使用csv
。