소연의_개발일지
article thumbnail

엑셀 데이터 가져오기(위키독스): https://wikidocs.net/150903

 

01. 데이터 가져오기

[TOC] ## 엑셀 데이터 가져오기 ```{.python} import pandas as pd file = 'c:\\폴더명\\파일명.xlsx' # 시트 지정 안하면 첫 번째…

wikidocs.net

 

예제로 배우는 파이썬 프로그래밍 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 파일 사용하기

1. CSV 파일 CSV란 Comma-separated values의 약자로서 CSV 파일은 각 라인의 컬럼들이 콤마로 분리된 텍스트 파일 포맷이다. 가장 간단한 형태의 CSV 파일은 문자열을 콤마로 Split 하여 처리하면 되지만, 간

pythonstudy.xyz


 

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)모드로 작성해주면 된다.

 

 

 

profile

소연의_개발일지

@ssoyxon

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!