我是Python代码的初学者,并遇到了一些相关问题 解释“ with”和“ with open”命令之间的区别。
但是由于缺乏对Python 3的了解,我仍然无法理解两者之间的区别,也无法弄清楚如何使我的代码运行。
在我现在正在学习的教程中,答案如下。
import csv
import matplotlib.pyplot as plt
x=[]
y=[]
with open('example.txt', 'r') as csvfile:
plot = csv.reader (csvfile, delimiter = ',')
for row in plots:
x.append(int(row[0]))
y.append(int(row[1]))
plt.plot(x,y,label='file')
plt.show()
我试图做的是使用如下所示的open和csv.reader命令
import csv
import matplotlib.pyplot as plt
plotdata = open ('testing.csv')
reader = csv.reader(plotdata, delimiter =',')
hx=[ ]
hy=[ ]
for x in reader:
hx.append(reader[0])
hy.append(reader[1])
plt.plot(hx, hy)
第一个带有“ with”命令的命令无效,而下面的带有“ with”命令的命令无效。万一我在末尾添加了close()
命令,但仍然显示错误消息
“ TypeError:'_ csv.reader'对象不可下标”
怎么了?
答案 0 :(得分:0)
我的想法如下:
a)在文件操作中始终使用with
b),除了练习之外,您还可以读取数据和处理数据
c)plot
(坏名)和reader
是迭代器,在循环中,您消耗迭代器以获得row
或x
,它们是迭代器提供的元素。 reader
本身无法解决[0]
的问题,您必须要使用x[0]
和x[1]
来代替。
答案 1 :(得分:0)
我认为问题在于,在第二个代码中您直接预订reader[0]
,否则在第一个代码中您预订其转换后的迭代值(row in plots
):int(row[0])
。
这应该有效:
for x in reader:
hx.append(int(x[0]))
hy.append(int(x[1]))
plt.plot(hx, hy)