0
VOLTTRONプラットフォームにExternalDataエージェントを実装して、CAISO OASISデータベースからCSVデータを抽出しています。 OASISは、XMLまたはCSVのいずれかのデータを含む.zipファイルを返します。私はぞんざいにCSVデータを処理する前に、私は、ファイルオブジェクトへの結果の.csvファイルをアーカイブを解凍して開くこと_handle_csv機能を変更することで、欲しかったCSVデータを取得することができた:私はVOLTTRONにExternalDataエージェントを実装してCAISO OASISからデータを取得しています
def _handle_csv(self, headers, request, url, source_topic, source_params):
key_column = source_params.get("key", "")
flatten = source_params.get("flatten", False)
parse_columns = source_params.get("parse", [])
# I am expecting a zip archive containing a csv file
# so this is a workaround to read the zipfile and extract the csv
# by creating a file object with open() after extracting
# TODO find another way to get data w/o opening file so we dont
# have to do housekeeping
z = zipfile.ZipFile(StringIO(request.content))
fname = z.namelist()
z.extractall()
file_obj = open(fname[0], 'r')
# orig. file object assignment assuming request already in csv format
# file_obj = StringIO(request.content)
私が見つけるしたいと思いますこれを行うより良い方法で、.csvを閉じてファイルを削除するなど、過剰なハウスキーピングをしなくても、ファイルがエージェントデータディレクトリにスタックしないようにする必要はありません。任意の提案をいただければ幸いです。
私はPythonのドキュメントでそれをスキップしているに違いありません。私はそれを試みます。 – jmattfeld
あなたは大歓迎です。これはおそらくエージェントに追加するための良い機能です。この機能をご希望の場合は、https://github.com/VOLTTRON/volttron/issues –