色々なサイトを見て試していたところ自己解決できました。
バイナリ書き込みモードで新規ファイル生成 ~ ファイルを閉じるの部分を追加することで
取得したファイル内容をファイルとして生成してくれることができました。
def kntnGetFile(key1, dmain, flName, flKey, lg, msgFile):
headers = {
'Content-Type': 'application/json',
'X-Cybozu-Authorization': key1,
'X-HTTP-Method-Override': 'GET'
}
json_data = {
'fileKey': flKey
}
url = 'https://' + dmain + '.cybozu.com/k/v1/file.json'
for x in range(5): # 再試行用のfor (5回もcontinueされることはないが念のため)
try:
if x == 0 : response = requests.post(url, headers = headers, json = json_data)
# ステータスコードが4xx, 5xx番台の場合、再トライ
if 400 <= response.status_code < 600:
lg.warning('\"' + msgFile['WARNING']['00003'] + ' endpoint : ' + url + ' , message : ' + response.text + '\"')
response = apiRetry(response, 3, 'kntn', 'post', url, headers, json_data)
# open()関数にwbを渡し、バイナリ書き込みモードで新規ファイル生成
file = open(flName, 'wb')
# 各チャンクをwrite()関数でローカルファイルに書き込む
for chunk in response.iter_content(100000):
file.write(chunk)
# ファイルを閉じる
file.close()
# 実行結果 (ステータスコード200,201以外は失敗)
if 200 <= response.status_code < 202:
pass # 成功
else:
rslt += 1 # 失敗
return rslt
except Exception as e:
# ステータスコードを返す以前のエラーの場合、再トライ
lg.warning('\"' + msgFile['WARNING']['00005'] + str(e) + ' , endpoint : ' + url + '\"')
response = None
response = apiRetry(response, 3, 'kntn', 'post', url, headers, json_data)
continue