Python 解压 zip 文件 & 读取 json 文件
参加了一个比赛,提供的数据集只能在它的平台使用且无法下载,文件为 zip
格式,经查看里面包含了 csv
格式的文件和 json
格式的文件。
1.查看压缩包内文件
# 查看压缩包内所有文件
with zipfile.ZipFile('xxx.zip','r') as zipobj:
for filename in zipobj.namelist():
print(filename.encode('cp437').decode('utf-8'))
2.解压操作
# 解压某个文件
f = zipfile.ZipFile('xxx.zip', 'r')
f.extract('xxx.json', path='xxx', pwd=None)
# 解压全部文件
f = zipfile.ZipFile('xxx.zip', 'r')
for file in f.namelist():
f.extract(file, path='xxx')
或者(在 Jupyter Notebook 环境中)
# 解压到当前目录
!unzip xxx.zip
# 解压到指定目录下
!unzip -d 路径 xxx.zip
# 查看zip内容,但不解压
!unzip -l xxx.zip
3.读取 json 文件
# 读取第一行
with open("xxx.json", "r+") as f:
data = f.readline()
data
读取 json 文件出错的解决方法
# 由于文件中有多行,直接读取会出现错误,因此一行一行读取
file = open("xxx.json", 'r', encoding='utf-8')
papers = []
for line in file.readlines():
dic = json.loads(line)
papers.append(dic)
print(papers)
当然可以利用 pandas 自带的 read_json
。
df = pd.read_json("xxx.json", encoding="utf-8", orient='records', lines=True) # 按行读取
df.head()