あるcsvにある文字列のヘッダーを読み込み、別のcsvファイルのヘッダーをして書き込む方法。
以前の質問(pythonにおけるopen関数のencoding引数について) において、python2を使っていたことで発生していた問題をpython3をインストールすることで解決をしようと試みたのですが、別の問題が発生してしまいました。
それは、以下のコードでserval_process.csvのヘッダーをpointer.csvのヘッダーとして書き写そうとすると以下のようなエラーが出てしまうことです。
どうすればエラーを出さずに処理を実行できますでしょうか?
教えて頂けると助かります。
コード
# coding: utf-8
import csv
import zipfile
import re
#import io
#import sys
#root_dir = '/Users/bigbird/Documents/UROP_data'
root_dir ='/home/firebird555/note2'
with open('serval_process.csv', 'r') as f:
reader = csv.reader(f)
#pointer.csvという新しいcsvファイルを以下で作る。
g = open('pointer.csv', 'ab') #閉じるのを忘れずに...!
csvWriter = csv.writer(g)
header = next(reader) # ヘッダーを読み飛ばしたい時
csvWriter.writerow(header) #エラーが出る...。
for row in reader:# serval_process.csvのデータを1行づつ取得できる
local = row[2]#localでzipファイルのある場所
with zipfile.ZipFile(local, 'r') as zf: #zipファイルを読む
files = [info.filename for info in zf.infolist() if info.filename.endswith('.txt')]
for f in files:
listData = [] #listの初期化
listData.append(row[0])
listData.append(row[1])
bindata = zf.read(f)
text = bindata.decode(row[3])#この後テキストデータを整形した上でTextに保存したい。
#テキストの先頭にあるヘッダとフッタを削除
text = re.split(r'\-{5,}',text)[2]
text = re.split(r'底本:', text)[0]
#空白文字、改行およびタブの除去
text = text.strip()
#上で加工した書き込むテキストを開く。また、テキストの場所をpointer.csvに記録する。
text_file = root_dir + '/Text/'+ f
listData.append(text_file)
with open(text_file, 'w', encoding="utf-8") as fp:#エラーが発生してしまう場所
fp.write(text)
listData.append('utf-8')
csvWriter.writerow(listData) #1行書き込み
g.close()
エラー
Traceback (most recent call last):
File "ExtractText.py", line 18, in <module>
csvWriter.writerow(header) #エラーが出る...。
TypeError: a bytes-like object is required, not 'str'