【发布时间】:2019-08-21 21:48:23
【问题描述】:
我正在尝试在 shell 中使用“compose”命令来合并我在存储桶 GCP 中获得的文件。当此命令合并这些 csv 文件但不跳过标题时会出现问题。
我最终得到的是 24 个 csv 文件和 24 个标题的合并。
尝试在 python 中执行此操作,但也没有解决方案。
有什么帮助吗??
【问题讨论】:
-
你在做什么命令?
我正在尝试在 shell 中使用“compose”命令来合并我在存储桶 GCP 中获得的文件。当此命令合并这些 csv 文件但不跳过标题时会出现问题。
我最终得到的是 24 个 csv 文件和 24 个标题的合并。
尝试在 python 中执行此操作,但也没有解决方案。
有什么帮助吗??
【问题讨论】:
gsutil 上不存在任何跳过 csv 标头的标志,但我有这个 python 脚本可以解决这个问题。
此脚本从存储桶下载 csv 文件,附加它们跳过标头,然后再次将附加的文件上传到存储桶。
import csv
from google.cloud import storage
client = storage.Client()
bucket = client.get_bucket('YOUR.BUCKET.NAME')
blob = bucket.get_blob('FILE1.NAME')
blob.download_to_filename('FILE1.NAME')
blob2 = bucket.get_blob('FILE1.NAME')
blob.download_to_filename('FILE2.NAME')
csvs = ["FILE1.NAME", "FILE2.NAME"]
writer = csv.writer(open('appended_output.csv', 'wt'))
for x in csvs:
with open(x, "rt") as files:
reader = csv.reader(files)
next(reader, None)
for data in reader:
writer.writerow(data)
blob = bucket.blob("appended_output.csv")
blob.upload_from_filename("appended_output.csv")
【讨论】: