2. 해외선물/2-4. 해외선물 API (사용)

(키움증권 해외선물 OpenAPI-W) 로그인 설정하기 (3) with ~ as 구문

봄이오네 2023. 1. 5. 08:03
반응형
목 차
1. 들어가며
2. 사전설명
1) with ~ as 구문
2) 경로 설명
① 윈도우에서 확인가능한 파일 경로
② 파이썬에서 인식하는 경로
3) with ~ as 와 유사한 구문
3. 코드 설명
4. 전체 코드
5. 마치며

1. 들어가며

지난 글에서는 pyautogui 모듈을 활용하여,
OpenAPI-W의 "로그인 창"에서 비밀번호를 입력하여 로그인하는 방법을 알아보았다.
인터넷에 pyautogui 모듈에 대한 설명이 많이 있으니
필요한 내용은 사용자가 직접 찾아보는 것도 좋아 보인다.

이번 글에서는 "로그인 창"의 로그인 비밀번호
코드에 직접 넣는게 아니라,
사용자 PC의 바탕화면에 txt 파일 형태로 만들어 둔 내용을
불러오는 내용을 알아볼 예정이다.

해선에서 수익이 나는 것이 목표라면, 실전 투자(실투)를 해야 하는데,
파이썬 코드에 "로그인 비밀번호"와 "인증서 비밀번호"를 직접 작성하는 것은...
무엇인가 찝찝한 기분이 들기 때문이다.

아래 링크(바이비트의 비트코인 자동매매)의 with ~ as 구문을
OpenAPI-W 로그인에 적용해 볼 예정이다.

주의사항
이 글에서 언급한 with ~ as 구문은 필수 구문은 아니다.
본인이 판단하여, 집에서 혼자 활용할 거라면,
굳이 이 글처럼 with~as 구문을 이용하여 txt 파일의 비밀번호를 읽어올 필요는 없다.

 

(비트코인 자동 매매) 바이비트 API - bybit.key 만들기

1. 들어가며 지난 글에서는 API Key와 API Secret 생성하는 방법을 알아보았다. 이번 글에서는 위 2개 파일을 저장한 파일(bybit.key)을 만들고, 이를 통해 바이비트 API에 접속/로그인 하는 방법을 알아보

springcoming.tistory.com


2. 사전설명

1) with ~ as 구문

"함수"라고 표현하기는 그렇고, " with ~ as 구문 "으로 설명하겠다.

  • 구문 기능 : 사용자pc에 있는 파일을 읽어오거나(가져오거나) 파일에 쓰는 기능
  • 구문 활용 : with 사용자pc 경로 as 약칭
  • 구문 사용 : txt 파일에 미리 "비밀번호"를 입력하여, with ~ as구문을 활용하여 비밀번호를 읽어온다.

2) 경로 설명

윈도우에서 제공하는 경로는 역슬래시( \ )로 표현된다.
이에 비해, 파이썬(파이참)에서 인식하는 경로는 슬래시( / )로 표현된다.
슬래시 및 역슬래시는 사용자를 헷갈리게 만든다.

여기서는 파이참(PyCharm)의 경로 설정에 대해 알아보자.

① 윈도우에서 확인가능한 파일 경로
먼저 아래 < 그림1 >에서 확인가능하듯이
윈도우에서 파일 경로는 C:\Users\User\Desktop 이다.

파일의 경로까지 작성해본다면,
C:\Users\User\Desktop\ 파일명 . 확장자의 형태이다.

아래 btlg_password 파일의 경로는
C:\Users\User\Desktop\ btlg_password. txt이다. (윈도우 경로)

 

그림1. 윈도우에서의 파일 경로를 확인해 보자


② 파이썬에서 인식하는 경로
C:\Users\User\Desktop\ btlg_password. txt 는 윈도우에서 적용된 경로라면,
파이썬(파이참)에서 파일을 인식하는 경로는, 2가지로 표현할 수 있다.

  • (역슬래시 2개) ' C: \\ Users \\ User \\ Desktop \\ btlg_password. txt '
  • (리버스 적용) r ' C: / Users / User / Desktop / btlg_password. txt '

필자는 경로를 지정할 필요가 있는 경우
비교적 수정이 적은 리버스 방법을 적용한다.

또한 리버스 적용방법은 변수에 넣어서 활용한다.
dir = r ' C: / Users / User / Desktop / btlg_password. txt ' 로 작성하면,
경로를 dir 변수에 넣어서 활용가능하다.

3) with ~ as 와 유사한 구문

open, readline, close 를 활용하는 방법이 있다.

dir = r ' C: / Users / User / Desktop ' 이라면,

  • f = open(dir + " / " + btlg_password. txt, "r", encoding = "utf-8") # 텍스트 파일 열기
  • f1 = f.readline() # text의 첫번째줄 읽기(읽어서 가져오기)
  • f1.close() # text 닫기
  • print(f1) # 읽어온 첫번째줄 출력하기
f = open(dir + " / " + btlg_password. txt, "r", encoding = "utf-8") # 텍스트 파일 열기
f1 = f.readline()      # text의 첫번째줄 읽기(읽어서 가져오기)
f1.close()               # text 닫기
print(f1)                # 읽어온 첫번째줄 출력하기


open_readline_close 구문을 통해 text 파일의 2번째 줄을 얻어오는 방법도 있으나,
→ 필자는 본인에게 익숙한 with ~ as 구문을 활용하여 text 파일의 2번째 파일을 받아올 것이다.


3. 코드 설명

< 그림2 >는 with ~ as 구문과 pyautogui 모듈을 활용하여,
CommConnect 함수로 호출된 "로그인 윈도우"에 비밀번호를 입력하는 코드이다.

그림2. with ~ as 구문과 pyautogui 모듈을 이용하여 로그인을 설정한다

 

30줄 : password_login 함수를 임의로 선언한다.
31줄 : with ~ as 구문을 활용하였다.
r'c\Users\User\Desktop\bltg_password.txt를 f 변수에 인스턴스 한다.
32줄 : f.readlines()를 이용하여 lines 변수에 인스턴스 한다.

33줄 : lines[0]을 통해 text의 1번째줄의 비밀번호(self.password)를 읽어온다. (사용자pc의 메모리에 저장)
34줄 : lines[1]을 통해 text의 2번째줄의 인증서 비밀번호(cetification_password)를 읽어온다.
35줄 : lines[2]를 통해 text의 3번째줄의 계좌번호를 읽어온다. (키움측에서 계좌비밀번호 입력은 막아두었다)

37줄~40줄 : pyautogui를 통해 "비밀번호 칸"으로 이동하여 비밀번호(33줄)를 입력한 후,
43줄에서 엔터(enter)를 눌러 로그인한다.

그림3. with ~ as 구문 출력 결과


4. 전체 코드

아래 코드는
바탕화면에 메모장을 열어 이름이 "zzz"인 text 파일을 만들고 나서 실행한다.

def aaa():
    with open(r'C:\Users\User\Desktop\zzz.txt') as f:
        lines = f.readlines()
        password = lines[0].strip()
        cetification_password = lines[1].strip()
        deposit_password = lines[2].strip()

    print(password)
    print((cetification_password))
    print(deposit_password)

aaa()


# (expected result)
# aaa123
# bbb456
# ccc789

5. 마치며

with ~ as 구문을 통해 txt 파일에 작성된
로그인 비밀번호, 인증서 비밀번호, 계좌비밀번호를 불러오는 방법을 알아보았다.

위에서 언급하였듯이,
pyautogui 코드 안에 "로그인 비밀번호"를 작성한다면,
굳이 with ~ as 구문을 작성할 필요없다.

해외선물 OpenAPI-W를 돌리기 위해 필수적인 내용은 아니나,
한번이라도 덜 클릭하려면, 구축해 두는 것도 나쁘지 않아 보인다. ^^;

반응형