엑셀 데이터 가져오기(위키독스): https://wikidocs.net/150903
예제로 배우는 파이썬 프로그래밍 CSV 파일 사용하기: http://pythonstudy.xyz/python/article/207-CSV-%ED%8C%8C%EC%9D%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
csv파일 만들기
헤더(목차)를 ,(컴마)로 구분하여 작성해준 후
임의로 내용 한줄을 적었다. 이것또한 ,로 구분해 준다.
저장할 때 .csv파일 형식으로 저장하면 된다.
csv 파일 읽기
import csv
#csv 파일 읽기
user_info = open('user_info.csv', 'r', encoding='utf-8') #읽기모드로 파일을 연다
user_info_list = csv.reader(user_info)
for line in user_info_list: #for문으로 한줄씩 불러온다.
# print(line[0], line[1], line[2]) #리스트 형식으로 가져와지므로 슬라이싱이 가능하다.
print(line) #한줄씩 출력해 준다.
user_info.close() #닫아준다.
csv를 import 한 후 .csv파일을 읽기모드로 오픈하고
파일객체를 csv.reader(파일객체)에 넣으면 된다.
csv.reader()함수는 Iterator 타입인 reader 객체를 리턴하므로 for 루프를 돌며 한 라인씩 가져올 수 있다.
이때 리턴되는 각 라인은 컬럼들을 나열한 리스트(list) 타입이다. -> 슬라이싱이 가능하다.
출력결과
['아이디', ' 비밀번호', ' 이메일']
['soyeon', ' soyeon123', ' soyeon@gmail.com']
CSV 파일 쓰기
csv 파일을 쓰기 위해서는 .csv파일을 쓰기모드로 오픈하고 파일객체를 csv.writer(파일객체)에 넣으면 된다.
csv writer는 writerow() 라는 메서드를 통해 list 데이터를 한 라인 추가하게 된다.
윈도우즈의 경우 csv 모듈에서 데이터를 쓸 때 각 라인 뒤 빈 라인이 추가되는 문제가 있는데, 이를 없애기 위해 파일을 open할 때 newline="와 같은 옵션을 지정한다.
# csv 파일 쓰기
f = open('user_info.csv', 'a', encoding='utf-8', newline='')
wr = csv.writer(f)
wr.writerow(['asdf', 'asdf1234', 'asdf@naver.com'])
wr.writerow(['qwer', 'qwer1234', 'qwer@daum.net'])
f.close()
코드는 문제가 없었음.
그런데 예제를 치다가
OSError: [Errno 9] Bad file descriptor 오류가 나왔다.
스택오버플로우에 검색해보니(https://stackoverflow.com/questions/64351302/why-am-i-getting-errno-9-bad-file-descriptor-on-file-close-error-handling)
설마...! (두근)
위의 예제를 주석처리하고 다시 실행해보겠다.
ㅡㅡ 그래도 여전히 같은 오류가 뜬다.
알고보니 전에 개발원에서 랜섬웨어 대란이 났을 때
내 코드파일 보호하겠다며 코드파일 전체를 보호된 폴더에 넣어놨더니 생긴 문제였다.
보호된 폴더 해제 위치: 설정 - 업데이트 및 보안 - windows 보안 열기 - 바이러스 및 위협 방지 - 랜섬웨어 방지 항목에서 [랜섬웨어 방지 관리]- 제어된 폴더 엑세스 밑에 보호된 폴더 - 보호된 폴더 삭제
아니 이 문제 때문이라는것을 어떻게 아신거지?
반장님은..인간컴퓨터..?
정말 실로 놀랍다..
CSV 파일 추가하기
위 예제와 같게 하되 w가 아니라 a(append)모드로 작성해주면 된다.
'개발공부 > Python' 카테고리의 다른 글
[Python] sqlite3 모듈 (0) | 2023.06.04 |
---|---|
[Python] Turtle 모듈 공부하기 (1) | 2023.05.30 |
그림판 사용하여 이미지 크기 조정하기 (0) | 2023.05.04 |
[파이썬] time 함수 사용해서 간단한 디지털 시계 만들기 (0) | 2023.04.30 |
[파이썬] 추억의 게임 고향만두 텍스트 게임으로 만들기(반복문, 조건문) (0) | 2023.04.29 |