비망록(①csv.reader의 AttributeError, ②get_sheet_by_name의 DeprecationWarning, ③.delete_cols가 작동하지 않음)

・오늘의 진척
기본 기능의 확인으로서 아래 그림의 처리를 모두 할 수 있도록 했다. 여전히 미세한 오류가 많다.

발생한 실수를 잊지 않도록 쓰십시오.
①대문자 소문자는 키치리와.

입력
import csv
csvfile = open('/content/drive/My Drive/Colab Notebooks/testB.csv',encoding="shift-jis")
reader = csv.Reader(csvfile)
for row in reader:
print(row) 

출력
AttributeError                            Traceback (most recent call last)
<ipython-input-14-bb1b8be4844f> in <module>()
      3 csvfile = open('/content/drive/My Drive/Colab Notebooks/testB.csv',encoding="shift-jis") 
----> 4 reader = csv.Reader(csvfile)
      5 for row in reader:
AttributeError: module 'csv' has no attribute 'Reader'

csv.reader() 와 csv.Reader() , 대소문자를 잘못했기 때문에 Attribute Error가 발생.
csv.DictReader에서 다시 쓸 때 자주 보일 수 있으므로 기억하십시오.

②get_sheet_by_name은 사용하지 않는 것이 좋다

입력
import openpyxl
wb=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/testB.xlsx')
wb.get_sheet_names()

출력
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:3: DeprecationWarning: 
 Call to deprecated function get_sheet_names (Use wb.sheetnames).
  This is separate from the ipykernel package so we can avoid doing imports until
['Sheet1']

Deprecation은 비추천이라는 의미. 기능은 하지만 그다지 좋지 않기 때문에 사용되고 있는 것 같고, 한층 더 추천의 함수도 써 있다.
말해 보면 알기 쉽지만, 바 계속 나온 문자열을 보고 「하? 어째서?」라고 되어 낭비하게 시간을 썼다.
제대로 영어는 읽지 않으면 안 되네, 정말로・・・.

③ hogehoge.delete_cols 명령의 hogehoge 부분은 변수 이름입니다.

입력(수정 전)
import openpyxl
wb=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/testB.xlsx')
ws = wb.worksheets[0]
sheet.delete_cols(2)
wb.save('/content/drive/My Drive/Colab Notebooks/testC.xlsx')

파일이 출력되었지만 Excel의 두 번째 열이 삭제되지 않았습니다.
지금 보면 다양한 사이트를 손잡이 먹어 완전히 이상해지고 있다.

입력(수정 후)
import openpyxl
wb=openpyxl.load_workbook('/content/drive/My Drive/Colab Notebooks/testB.xlsx')
ws = wb.worksheets[0]
ws.delete_cols(2)
wb.save('/content/drive/My Drive/Colab Notebooks/testC.xlsx')

wb=openpyxl.load_workbook() 에서 xlsx 데이터를 변수 wb에 채우기
ws = wb.worksheets [0]에서 wb의 xlsx 데이터에서 인수 (0) 페이지의 워크 시트 데이터를 변수 ws로 채 웁니다.
ws.delete.cols(2) 에서 워크시트의 데이터 ws 에 대한 열 수 두 번째 열(인수) 삭제
wb.save() 로 저장해 성공・・・어?

최종적으로 출력된 testC.xlsx는 제대로 2열이 사라진 데이터가 되는데, 왜일까?
ws의 데이터는 wb로부터 카피해 온 것이므로, wb.save를 하기 전에, wb에 ws의 데이터를 돌려주지 않으면 진짜는 안 되는 생각이 든다.
ws=wb.worksheets[]를 사용한 시점에서, ws와 wb의 데이터가 동기하고 있는 것일까···?
조사해 모르면, 질문을 써 보는가···?

~~추기~~
배열은 참조됩니다, 답변을 제공 링크를 붙여.
htps : // 코 m / ぇ ぇ ぇ l 3176 / 쿠에 s 치온 s / d42 에 FC 6482528 에 1556

좋은 웹페이지 즐겨찾기