python - 仅使用 csv 内容导出压缩文件夹
问题描述
1.我正在使用 Oracle,想法是使用 python 脚本将表导出为包含 csv 文件的压缩文件夹,其中包含我的数据。
2.Additionaly:是否可以将这些数据保存在每列的 csv 中。例如,我有 4 列,它们都存储在 csv 的 1 列中。 看到这张图片
这是我的脚本:
import os
import cx_Oracle
import csv
import zipfile
connection = cx_Oracle.connect('dbconnection')
SQL = "SELECT * FROM AIR_CONDITIONS_YEARLY_MVIEW ORDER BY TIME"
filename = "sample.csv"
cursor = connection.cursor()
cursor.execute(SQL)
with open (filename, 'r') as output:
writer = csv.writer (output)
writer.writerow([i[0] for i in cursor.description])
writer.writerows(cursor.fetchall())
air_zip = zipfile.ZipFile("sample.zip", 'w')
air_zip.write(filename, compress_type=zipfile.ZIP_DEFLATED)
cursor.close()
connection.close()
air_zip.close()
我所做的代码分别导出了 csv 和压缩文件夹,其中包含适当的 csv 文件,我只想继续导出这个压缩文件夹! 包含预期的 sample.csv 的 sample.zip 和同时生成的 sample.csv。
解决方案
有一个问题列表:
.csv文件格式不正确(一行被视为单个记录(字符串)而不是记录序列):
- (盲目地)查看代码和工具(
csv.writer
, cx_Oracle)文档,似乎是正确的 - 当注意到文件是用Excel打开时,我记得在某些时候我遇到了类似的问题。快速搜索产生了[SuperUser]:如何让 Excel 将逗号解释为 CSV 文件中的默认分隔符? . 这就是罪魁祸首(.csv文件在在线查看器/编辑器中看起来不错)
- (盲目地)查看代码和工具(
代码“导出” .csv和.zip文件(我不知道导出是什么意思,我假设生成- 意思是在运行代码后,两个文件都存在):
解决此问题的方法是在将.csv文件存档到.zip文件后将其删除。翻译成代码意味着在当前脚本片段的末尾添加:
os.unlink(filename)
作为最后的观察(如果你想学究气),关闭光标和数据库的行可以在with块之后或air_zip创建之前移动(在归档时保持它们打开是没有意义的)。