使用Python打开csv文件时的IO错误: 无效模式('r')或文件名"['C:\\\\bigdata
当我想打开一个csv文件并导入到我的sqlite数据库时,
这是我的代码:
import os
import csv
import sqlite3
import string
connection = sqlite3.connect('nba.db')
cursor = connection.cursor()
officialbatch_file = []
for dirPath, dirNames, PlayoffsfileNames in os.walk('C:\\bigdata_nba\\rawdata\\teamgamelogbatch'):
for f in PlayoffsfileNames:
officialbatch_file.append(os.path.join(dirPath, f))
csvfile = open(str(officialbatch_file),'r')
creader = csv.reader(csvfile, delimiter=',',quotechar='"')
new_f = f[:15]
cursor.execute('DROP TABLE IF EXISTS '+str(new_f))
cursor.execute('CREATE TABLE '+str(new_f)+'(Team_ID text, Game_ID text, GAME_DATE , YEAR date,TEAM text, MATCHUP text,RIVAL_TEAM text, WL text, MIN integer, FGM integer, FGA integer, FG_PCT integer, FG3M integer, FG3A integer, FG3_PCT integer, FTM integer, FTA integer, FT_PCT integer, OREB integer, DREB integer, REB integer, AST integer, STL integer, BLK integer, TOV integer, PF integer, PTS integer, VIDEO_AVAILABLE integer)')
connection.commit()
但是出现了这个错误信息:
Traceback (most recent call last):
File "C:\Python27\nbadata_script\AlliInOneTeamGameLogRegularSeason.py", line 14, in <module>
csvfile = open(str(officialbatch_file),'r')
IOError: [Errno 22] invalid mode ('r') or filename: "['C:\\\\bigdata_nba\\\\rawdata\\\\teamgamelogbatch\\\\1610612737\\\\Playoffs\\\\TeamGameLog1987-88Playoffs.csv']"
我现在尝试了很多方法,所以如果能帮我一下,我会很感激!
谢谢!
2 个回答
0
在路径示例中使用正斜杠 "/",比如这样 -->('C:/bigdata_nba/rawdata/teamgamelogbatch'):
2
你正在尝试打开一个列表的字符串版本:
officialbatch_file.append(os.path.join(dirPath, f))
csvfile = open(str(officialbatch_file),'r')
你这里想要的是完整路径,而不是文件名的列表:
fullname = os.path.join(dirPath, f)
officialbatch_file.append(fullname)
csvfile = open(fullname, 'rb')
我假设你还想保留officialbatch_file
列表中的文件名。如果不需要的话,可以把所有关于officialbatch_file
的内容删掉。
如果你使用的是Python 2,打开CSV文件时应该用二进制模式(比如'rb'
),因为csv
模块会明确处理行结束符。在Python 3中,可以用open(fullname, 'rb', newline='')
来打开。