ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [python] 외부변수 설정2(2개의 파이썬파일 이용)
    외부변수 이용하기 2021. 12. 9. 18:39

    이전 외부변수를 알아보았다. 이번에는 외부변수에 외부변수를 이용해 데이터를 수집해보자.  두가지 외부변수를 이용하는 이유는 너무 방대한 데이터가 한곳에서 돌아가면 무리가 되기때문에 두곳으로 나누어 실행하게 해주는 것이다. 쉽게 말하자면 하나의 일을 한명이 처리하는 방법보다 두명이 처리하는것이 무리가 덜 가기때문이라 생각하자.

     

    이해하기 쉬운 링크

    1. stock_list.csv는 아래 링크를 참고.

    - KRX(한국거래소)주식 정보 가져오기

    주식데이터 수집 코드는 아래 링크를 참고.

    - (Linux)환경 실행코드 python3로 주식 정보 수집

    -

     

    이제 본격적으로 외부변수를 이용해보도록 하자.

     

    1. main.py 파이썬파일 코드입력

    제일 먼저 main.py 파일을 생성 후 코드 입력 중요한 부분은 밑에 따로 설명을 하도록 하겠다.

    메인 파일을 실행시켜 다음 파이썬 파일까지 실행 시켜 주식 정보를 나눠서 수집하는 방법을 이용할 것이다. 위에서 말했듯이 2명이서 일하면 무리가 덜 갈테니까!

    # 경로 확인
    import os
    
    #필요한 라이브러리 호출
    import pandas as pd
    import numpy as np
    import time
    import datetime
    import sys
    
    stock_total = pd.read_csv("stock_list.csv")
    
    # for i in range(len(stock_total)):
    for i in range(5):    
        time.sleep(0.5)
        
        stock_code = stock_total['종목코드'][i]
        stock_name = stock_total['종목명'][i]
        market = stock_total['시장구분'][i]
        
    #     stock_code = str(stock_code)
    #     stock_name = str(stock_name)
    #     market = str(market)
        
        # 현재 날짜
        now = datetime.datetime.now()
        
        # 로그
        log_df = pd.DataFrame({
            'stock_code':[stock_code],
            'stock_name':[stock_name],
            'market':[market],
            'time' : [now]
        })
        
        # 로그 csv
        log_df.to_csv("log.csv", mode = 'a', header=False)
        
        # 시스템 실행
        os.system("python3 stock_test.py" + " " +  stock_code + " " + stock_name + " " + market)

     

     

     

    2. log 설정

    자 이제 main.py에서 돌아가는 정보도 csv로 저장해 확인 할 수 있도록 log를 설정해 주었다. 이건 혹여나 main.py에서 돌아가더라도 잘못되었는지를 빠르게 파악할수 있도록 해준다 생각하자. 

        # 로그
        log_df = pd.DataFrame({
            'stock_code':[stock_code],
            'stock_name':[stock_name],
            'market':[market],
            'time' : [now]
        })
        
        # 로그 csv
        log_df.to_csv("log.csv", mode = 'a', header=False)

     

     

    3. 시스템 실행 

    이부분이 제일 중요하다!!! os.system()함수는 python3를 실행시키며 다음 파이썬 파일(stock_test.py)에 코드가 실행 되게끔 해주는 중요한 함수이다!

        # 시스템 실행
        os.system("python3 stock_test.py" + " " +  stock_code + " " + stock_name + " " + market)

     

     

    4. 다음 파이썬 파일(stock_test.py) 코드 입력

    주식 데이터 수집은 위 링크를 참고해서 이해하자! 이부분도 중요한 부분만 설명 하겠다.

    import sys
    import os
    import pandas as pd
    import datetime
    from pykrx import stock
    
    # 외부변수 중요부분!
    stock_code = sys.argv[1]
    stock_name = sys.argv[2]
    market = sys.argv[3]
    
    # 날짜선택
    end_dt = datetime.datetime.now()
    start_dt = end_dt - datetime.timedelta(days=1)
    
    end_dt = str(end_dt.year) + str(end_dt.month) + str(end_dt.day)
    start_dt = str(start_dt.year) + str(start_dt.month) + str(start_dt.day)
    
    # 현재 시간 선택 
    now = datetime.datetime.now()
    
    stock_df = stock.get_market_ohlcv_by_date(fromdate=start_dt, todate=end_dt, ticker=stock_code) 
        # 위 데이터를 가져오면 날짜,시가,고가,저가,..등만 나오므로 칼럼을 추가해주도록 하자.
        
    stock_df["종목명"] = stock_name 
    stock_df["종목코드"] = stock_code
    stock_df["시장구분"] = market
    stock_df["time"] = now
            
    stock_df = stock_df.reset_index()
    
    if not os.path.exists('stock_df_total_test.csv'):
            stock_df.to_csv('stock_df_total_test.csv', index=False, mode='w')
    else:
            stock_df.to_csv('stock_df_total_test.csv', index=False, mode='a', header=False)

     

     

    5. 외부변수 코드

    자 중요한 부분이다!  main.py에서 설정 (위 3번에서 설정)해주었던 stock_code, stock_name, market 변수들을 다음 파이썬파일(stock_test.py)에 적용 시켜주기 위해 각각 sys.argv[1], sys.argv[2], sys.argv[3]를 사용하여 적용 시킨다. 그러면 main.py에 반복문을 사용하여 출력된 stock_code, stock_name, market 가 다음 파이썬에서 적용되어 출력이 된다.

    # 외부변수
    stock_code = sys.argv[1]
    stock_name = sys.argv[2]
    market = sys.argv[3]

     

    6. 실행

    자 이제 실행 코드로 main.py를 실행시켜보자. 코드는 아래와 같다

    $ python3 파일명
    예) python main.py

     

     

    7. 확인

    이제 잘 csv에 수집이 되엇는지 확인해보도록 하자. 2개지 csv를 확인하면 된다. 

    1. 첫번째 파일 main.py에서 log.csv

    2. 두번째 파일 stock_test에서 stock_df_total.csv

     

     

    이렇게 완료가 되었다. 이제는 주피터노트북에서 큰파일을 마냥 기다리며 무리가 안되게 하는 방법을 알았다. 역시 한명이 일하는 것보다는 두명이서 일하는게 덜힘든 것이다. 좀더 활요해 더많은 자료를 올려보도록 하겟다.

     

    '외부변수 이용하기' 카테고리의 다른 글

    [python] 외부변수 설정  (0) 2021.12.06

    댓글

Designed by Tistory.