{Python}ファイル操作

 

https://note.nkmk.me/python-file-io-open-with/


OS: Windows10
バージョン: 3.7.9

想定シナリオ:
エクセルからデータを取得し、すべての列をスペースで連結してテキストファイルに書き込む


前提:

python -m pip install openpyxl

 

from openpyxl import Workbook
from openpyxl import load_workbook

# テスト用ファイル作成


wb1 = Workbook()
ws1 = wb1.active


ws1.append(['col1','col2','col3'])

for i in range(10):
  values = []
  values.append('A'+str(i) )
  values.append('あ'+str(i) )
  values.append(i)
  ws1.append(values)

wb1.save('a.xlsx')


# ファイル出力

f1 = open('b.txt', mode='w', encoding='utf-8', newline='\n')


wb2 = load_workbook(filename='a.xlsx', read_only=True)
sheetname = wb2.sheetnames[0]
ws2 = wb2[sheetname]

for row in ws2.iter_rows(min_row=2):
  if row[0].value is None:
    break
  values = []
  for col in row:
    values.append(str(col.value) )
  print(values)
  f1.write( ' '.join(values)+'\n' )

f1.close()


# 出力ファイル確認

with open('b.txt', mode='r', encoding='utf-8') as f2:
  print(f2.read())

with open('b.txt', mode='r', encoding='utf-8') as f3:
  while True:
    l = f3.readline()
    print(l, end="")
    if not l:
      break


wb2.close()
wb1.close()