본문 바로가기
Programming/Python

[Python] 코랩과 파이썬을 이용해 구글 드라이브에 폴더 만들고 파일 쌓고 불러오기

by AI_Wooah 2022. 3. 17.

1탄

코랩과 파이썬을 이용해 구글 드라이브에 폴더 만들고 파일 쌓고 불러오기

 

2탄

법원 사이트에서 공개된 전국법원 주요판결 판결문(글제목, 작성법원, 작성일, 파일다운url) 크롤링 해오기

(대법원 관계자분의 필요에 의해 허락받고 크롤링 한 것임을 알립니다.

허가받지 않거나 허가가 필요 없더라도 서버에 부하를 주거나 크롤링은 법에 저촉될 수 있으니 주의하시기 바랍니다.)

 

3탄

SQLite를 이용해서 크롤링 해온 내용 DB화 하기 (create, drop | insert, delete)

 

4탄

colab에서 python으로 url 날려서 파일 다운로드 크롤링 하기

 

 

코랩에서 크롤링을 하기 앞서서 폴더 만드는 작업을 진행한다.

필요한 라이브러리를 import 해준다.

여기서! 크롤링 하는 과정에서 다양한 라이브러리를 썼는데

파일 만드는 데 가장 필요한 라이브러리는

import os입니다.

다른 라이브러리들은 속편에 설명하겠습니다.

import os, sys
import sqlite3
import traceback
import logging
logger = logging.getLogger('wpg_logger')
logging.basicConfig(encoding='utf-8', level=logging.INFO, format='%(levelname)s:%(name)s:%(asctime)s:%(message)s', filename='./logger.log', filemode='a')
logger.info('[Start]')
# 현재 경로 확인
# path=os.getcwd()
# print(path)

rootPath="/content/drive/MyDrive/supremeCourt"
sqlDir="/sql"
attachDir="/attachment/"
dbFileName="wpg_file.db"
dbFilePath = rootPath + "/" + sqlDir + "/" + dbFileName

 

자주 쓰는 변수들은 맨 위에다 선언하고 값을 세팅해준다.

 

먼저 주석을 풀어 코랩의 현재 경로를 확인해준다.

# 현재 경로 확인
# path=os.getcwd()
# print(path)

 

현재 경로는 ./content 인 것을 확인할 수 있다.

 

이제 파일을 구글드라이브에 다운로드 하기 위해서 구글드라이브 경로를 확인해야 한다.

기본적으로 코랩과 같은 계정의 구글 드라이브로 연동되어 있으며

절대경로는 아래와 같다.

/content/drive/MyDrive/

이 아래 /구분자로 원하는 폴더를 생성하고 지정해 줄 수 있다.

 

자 그러면 폴더를 생성해야 하는데

무작정 생성만 해주면 예상치 못한 overwriting이나 에러가 생길 수 있다

그렇기 때문에 폴더가 해당 위치에 있는지 없는지 확인을 하고 없으면 생성해줘야 한다.

 

먼저 def makeDir() 메소드를 생성해준다.

필요한 변수는 rootPath, dir, category다.

 

하나의 메소드를 사용하여 sql에서 사용할 폴더와

파일 저장에 사용할 폴더를 각각 만들어 줄 예정이다.

 

앞의 두 변수는 원하는 경로를 지정해주기 위함이고 마지막 category는

sql 폴더를 만들지 attachment(첨부파일) 폴더를 만들지 알려주기 위한 파라미터다.

 

logger.info('[makeDir]')
# 폴더 체크 후 없으면 생성
def makeDir(rootPath, dir, category): 
  # root 경로에 원하는 폴더 이름 합치기
  dirPath = rootPath + "/" + dir
  # sqlDirPath에 폴더가 있는지 확인
  if os.path.exists(dirPath):
    logger.info('[makeDir] exists makeDirPath : '+ dirPath)
    # 폴더가 있는 것이 확인되면 파일 체크
    if category=="s":
      createDB(dirPath)
  else:
    # folderPath에 원하는 폴더가 없으면 생성 시도
    try:
      os.makedirs(dirPath)
      logger.info('[makeDir] makedirs success : ' + dirPath)
      # 폴더를 만들고 파일 생성
      if category=="s":
        createDB(dirPath)
    except OSError:
      logger.info('[makeDir] Error: Creating directory. ' + dirPath)
      print('Error: Creating directory. ' +  dirPath)

 

sql 폴더 생성하는 메소드를 실행한다.

################################
# logic
logger.info('[logic]logic start')
# sql 폴더 생성
makeDir(rootPath, sqlDir, "s")

첨부파일 폴더 생성하는 메소드를 실행한다.

  #첨부파일 디렉토리 체크
  makeDir(rootPath, attachDir, "a")

 

반응형

댓글