오늘은 암호가 걸려 있는 엑셀 파일을 파이썬으로 해제하는 방법에 대해 알아보자. 데이터는 보안에 굉장히 유의해야 하기 때문에 유출을 방지하고자 암호가 걸려 있는 경우가 많다. 엑셀 암호를 해제해도 되고 몇 개 없다면 직접 들어가 암호를 제거 해주겠지만.. 그렇지 않다면? 그리고 데이터 양이 많을 경우 엑셀 파일 한 개를 열고 닫는데도 시간이 꽤 걸린다:( import os import msoffcrypto import pandas as pd # 암호화된 엑셀 파일 경로 raw_path = '' # 해당 파일명 file = '' # 저장하고자 하는 엑셀 파일 경로 new_path = '' f = msoffcrypto.OfficeFile(open(os.path.join(raw_path, file)), 'rb..
이번에는 각 프로세스의 결괏값들을 합쳐 멀티 프로세싱 이후 다른 작업을 해보도록 하자. 기본 멀티프로세싱 코드는 이전에 작성한 포스트에서 확인 가능하다:) 2022.07.28 - [IT/python] - [python] joblib을 이용하여 멀티프로세싱(multi processing) 적용하기 [python] joblib을 이용하여 멀티프로세싱(multi processing) 적용하기 오늘은 joblib 라이브러리로 멀티프로세싱 하는 방법을 알아보자. 멀티프로세싱 예제 코드를 검색하면 대부분 import multiprocessing로 작성하는 예제가 나오는데 필자는 joblib으로 코드를 익혀서 hyang2data.tistory.com 분명 저장하는 방법이 있을 거 같은데 구글링 해도 전부 import..
오늘은 joblib 라이브러리로 멀티프로세싱 하는 방법을 알아보자. 멀티프로세싱 예제 코드를 검색하면 대부분 import multiprocessing로 작성하는 예제가 나오는데 필자는 joblib으로 코드를 익혀서 joblib이 더 익숙하다. 개인적으로 joblib의 멀티프로세싱 더 코드가 깔끔한 거 같기도 ㅎㅎ 항상 코드를 작성할 땐 사용자가 선택 할 수 있도록 작성하는 것이 좋은 코드라고 생각하기 때문에 이번에도 멀티프로세싱의 사용 여부를 선택할 수 있도록 해주었다. from joblib import Parallel, delayed import os # multi processing option USE_MULTIPROCESS = True def make_filelist(filepath): # 병렬로 ..
폴더명 변경하기 위해서는 os 라이브러리 내 rename을 사용해주면 된다. import os # 바꾸고자 하는 디렉토리가 포함된 경로 path = '' for path, dir, files in os.walk(path): if len(dir) > 0: for dt in dir: try: float(dt) except ValueError: break else: if len(dt) == 8 and dt[2:4] == dt[4:6]: rawpath = os.path.join(path,dt) newpath = os.path.join(path,dt[:4]+dt[6:]) print(dt,'->',dt[:4]+dt[6:]) # rawpath에서 newpath로 변경 os.rename(rawpath,newpath) ..
여러 파일을 생성하고 저장하는 프로세스에서는 중간에 끊겼을 때의 파일처리도 생각해야 한다. 여러 방법이 있겠지만 내가 생각한 방법은 처음 저장할 때 임시파일로 저장하고 저장이 완료되면 원래 파일로 바꿔주는 방법이다. # 저장하고자 하는 파일경로 및 이름 filepath = 'C:/User/drive/result.xlsx' try: dfresult.to_excel(filepath+'.tmp') except KeyboardInterrupt: quit() move(filepath+'.tmp', filepath) try문 안에서 .tmp를 추가하여 파일을 저장해준 뒤, 저장이 완료됐으면 .tmp를 풀어주는 개념인데, 만약 임시파일을 생성하다가 중지했을 경우 .tmp 파일만 있어 임시파일을 구분할 수 있다.
python으로 작업한 결과물을 서버에 업로드할 때 수동으로 하는 건 여간 귀찮은 일이 아니다. 그래서 라이브러리가 있나 찾아봤더니 역시나 python엔 없는게 없는지 paramiko이 라는 걸 발견했다. 이 라이브러리를 이용하면 코드만으로도 업로드 및 다운로드가 가능하다. import paramiko # ftp address host = "" # ftp 주소(IP 혹은 address) port = 22 # sftp 포트번호는 22, ftp 포트번호는 21 transprot = paramiko.transport.Transport(host,port) userId = "" # ID password = “” # 있을 경우 PW # ftp connect transprot.connect(username = use..