错误消息“TypeError:应为str、bytes或操作系统路径object,not list”,而代码与工作版本基本相同

2024-10-01 11:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我对编程一无所知,几天前才开始使用Python3.x。另外,我从来没有主动使用过这个网站,虽然它已经救了我很多次当我卡住,所以请原谅我,如果我的问题格式不是最好的。在

我的目标是通读x.csv文件并将我想要的数据绘制成图形。 程序的第一个版本已经开始运行:

import glob
import csv
import matplotlib.pyplot as plt
from datetime import datetime


files = glob.glob('C:\\Users\Serdar\Desktop\SEMINARARBEIT\Twitch\Twitch\Summary\*.csv')
a = "Fortnite"

listViewers = []
listTimestamp=[]


for x in range(4519):
    csv_file = csv.reader(open(files[x], "r"), delimiter=",")

    for row in csv_file:
        if a == row[1]:
            datetime_object = datetime.strptime(row[4], '%Y-%m-%d %H:%M:%S')
            listTimestamp.append(datetime_object)
            listViewers.append(float(row[2]))


t = listTimestamp
s = listViewers
plt.plot(t, s, 'r')

plt.gcf().autofmt_xdate() 
plt.xlabel('Time')
plt.ylabel('Viewers')
plt.title('Fortnite: Viewers over Time')
plt.grid(True)
plt.show()

我正在扫描4500个文件并绘制一个图形。没问题。在第二个程序中,我只需要一个.csv文件(它是另一个数据结构不同于之前的4500个文件)并以同样的方式处理它。在

这是我在标题中发现错误的地方。代码如下:

^{pr2}$

我知道我正在做一些事情,比如在“csv_file2”中保存一个列表类型的对象,而它需要字符串或字节等,但我不知道与第一个代码的区别在哪里。 考虑到我的经验不足,这可能是我没有看到的一件小事,但我怀疑在第二个代码的文件中,我在某些地方将“[]”作为一个值。这会不会被视为一份清单?另一种理论可能是,第二批文件有类似“ˆÐ”的字符,这也可能是个问题?在

我真的不太确定,希望你能帮我


Tags: 文件csv代码import程序图形datetime绘制
1条回答
网友
1楼 · 发布于 2024-10-01 11:31:10

您遇到的问题是因为glob.glob always returns a list of files,您的代码在代码的第一个版本中正确处理,而在第二个版本中则无法正确处理。因为你指定了一个特定的文件,环球网返回包含一个对象的列表。只需更改代码,将文件变量视为列表,它应该可以正常工作:

csv_file2 = csv.reader(open(file[0], "r"), delimiter=",")

相关问题 更多 >