Task
엑셀 읽고 몽고DB에 넣어주기
처음에 내가 생각한 구조는
pandas 로 엑셀파일을 df 으로 읽어주고
3개의 열을 한행으로 만들어 준 후에, 컬럼1을 변수a, 나머지 컬럼들을 변수b 에 넣어주려고 하였다.
하지만 서치해 보니 엑셀파일을 csv 으로 읽어주는 방법이 많았고
박사님도 df 으로 읽는 방식과 엑셀파일을 읽는 방식 중 무엇이 더 빠를지는 모른다고 하셨지만
나는 그 방법을 몰라서,, 그냥 df 로 읽은 것인데 추천하는 방법은, 엑셀파일 -> csv 파일 로 변환하여 읽어주기!
그러고보면.. 방법들이 그걸 말하고 있으면 고집 부리지 말고 그 방법을 고대로 따라하는 것이?
나도 모르게 계속 익숙하고 기존에 사용하던 방법을 고집하는 것 같아,, 서 서치 시 주된 방법으로 읽어보자
1. csv 파일 변한후 파일 읽기
우선 엑셀파일로 있던 파일을 '다른이름으로저장' 시 'csv'파일형식으로 저장한다
[vscode]
[vscode]
with 함수를 사용하여서 open('파일경로입력', '읽어준다는 의미r', encoding='utf-8'로 해주고)]
as 를 사용하여 짧은 변수에 지정해준다 : Universtiy
파일 읽고 쓰는 방법
1.
f = open("C:/doit/새파일.txt", 'w')
f.close()
* f.close() 를 통해서 파일을 직접 닫아주는 것이 오류를 줄여준다.( () 는 함수를 의미함)
2. 외부에 저장된 파일 읽기
f = open("C:/doit/새파일.txt", 'r')
line = f.readline()
print(line)
f.close()
f.open(새파일, 'r') 로 파일을 읽기모드로 연 후
readline()
을 통해 파일의 첫번째 줄을 읽어준다. line = f.readline()
print(line) 을 해주면 첫 줄을 읽어주고, f.close() 를 써주어 파일을 닫아준다.
* 2-1) 만약 모든 줄을 읽어서 화면에 출력하고 싶다면야,
# readline_all.py
f = open("C:/doit/새파일.txt", 'r')
while True:
line = f.readline()
if not line: break
print(line)
f.close()
while True: 무한 루프 안에서 f.readline() 을 사용해 파일을 계속해서 한 줄씩 읽어 들인다. 만약 읽을 줄이 없으면 break 를 수행한다.
3.
f = open("C:/doit/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
print(line)
f.close()
readlines 함수 사용하는 방법입니다.
readlines 함수는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려줍니다. != line (line과 같지않음 주의)
4.
f = open("C:/doit/새파일.txt", 'r')
data = f.read()
print(data)
f.close()
read 함수를 사용하는 방법입니다.
f.read() 는 파일의 내용 전체를 문자열로 돌려줍니다.
5. 지금까지 파일을 열고 닫아왔다면, f=open() 과 f.close() 안 쓰고 파일 읽는 방법
with open("foo.txt", "w") as f:
f.write("Life is too short, you need python")
with문을 사용하면 with 블록을 벗어나는 순간 열린 파일 객체 f 가 자동으로 close 된다.
이번에 짠 코드에서 선배랑 나도 with문을 사용했습니다.
다시 본론으로 1. csv 파일 읽어들이기
첫 줄이 이상하게 출력이 되어서 그 다음줄부터 출력해주려면
3번째 줄에 있는 #next(lines) -> next(lines)
ㅈ주석처리를 제거해주면 됩니다.
2. MongoDB 접속 후 확인하기
읽어들어온 파일을 몽고DB 에 접속시켜서 넣어주려고 합니다.
[vscode]
[vscode]
*이렇게 선배들이 짠 코드를 보고 생성하긴 했는데요,
정말 몽고DB 에 접속이 잘 되었는지 알려면 어떻게 해야 하죠?
print() 로 찍어본 후에
아래와 같이 출력이 되면(뭔가가 나오면) 잘 접속된 걸로 아시면 됩니다~
3. MongoDB 에 INSERT 해주기
Public_CollegeName.insert_one(x)
을 사용해서 해당 csv 파일을 MongoDB에 넣어줄 수 있다!
변수로 지정해둔 Public_CollegeName 에 잘 인서트 가 되었다~~ (짝짝짝짝)
삼일을.. 별 성과가 없었는데 주말에 선배님이 도와주셔서ㅜㅜ 드디어ㅠㅠ 짰습니다..ㅜㅜ 선배님께 무한한 감사를.. (아메리카노로 대신함ㅡㅜ)
여기서 끝인 줄 아랏지? ....
출력된 데이터에서 수정할 부분이 몇 가지 있었다.1. \xa0 row[2] 에서 요게 출력이 되어서 삭제해주기 -> str.replace() 를 써줄 것이다2. row[1:] 부터는 list 형태로 만들어 주어야 한다.3. 모든 영문을 대문자로 변환해 줄거다 -> .upper() 를 써준다
- 선배팁: https://wikidocs.net/13#strip 틈틈이 위키독스 파이선 문법 보기
'2021-1 > Expert' 카테고리의 다른 글
MongoDB | csv 파일 insert 하기 (0) | 2021.12.06 |
---|---|
MongoDB | csv 파일 읽어들어오기 (0) | 2021.12.05 |
Xshell | 명령어 (0) | 2021.12.05 |
Xshell | 연동하기 (0) | 2021.12.03 |
자주 쓰는 리눅스 명령어 (0) | 2021.11.18 |