파이썬

파이썬 오류모음(에러모음)

by nanumi posted Sep 09, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

파이썬 키움증권 오류모음

 

 

Google 계정이 소유자임에도 불구하고 Google 인증 웹 API의 "오류 403: access_denied"

Error 403: access_denied하면 메시지와 함께 오류가 발생합니다.The developer hasn’t given you access to this app. It’s currently being tested and it hasn’t been verified by Google. If you think you should have access, contact the developer [the email I just tried to log in with].

 

2.png

 

이 문제를 해결하는 방법은 간단했습니다.

  1. https://console.developers.google.com/으로 이동합니다.
  2. "Google API"라는 단어 옆의 왼쪽 상단에서 오른쪽의 프로젝트 드롭다운을 클릭합니다.
  3. 올바른 프로젝트가 선택되었는지 확인하십시오.
  4. 화면 왼쪽('자격 증명' 아래)의 'OAuth 동의 화면'을 클릭합니다.
  5. 동의 화면을 생성하지 않았다면 먼저 생성하세요.
  6. "테스트 사용자" 아래에 "+ 사용자 추가"라는 버튼이 있습니다.
  7. 테스트할 계정의 이메일을 입력하고 Enter 키를 누른 다음 저장을 클릭합니다.
  8. 지금 작동해야 합니다!

작년에는 이 작업을 수행할 필요가 없었기 때문에 최근에 업데이트한 것 같습니다.

 

 

 

 

 

구글 캘린더 api 사용시

Client secrets must be for a web or installed app. <<<에러

 

문제는 OAuth 2.0 클라이언트 ID가 아닌 서비스 계정 키 관리 서비스 계정에서 생성 된 json을 사용하고 있다는 것입니다.

 

이 Oauth2 클라이언트 ID가 아닌 서비스 계정을 통해 실제로 GCP 캘린더 API에 연결하기를 원하기 때문에 여기에 오는 사람을 위해 creds다음과 같이 원래 예제에서 개체를 만듭니다 .

from google.oauth2 import service_account

SCOPES = ['https://www.googleapis.com/auth/sqlservice.admin']
SERVICE_ACCOUNT_FILE = '/path/to/service.json'

credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)

서비스 계정이 올바른 액세스로 구성되어 있다고 가정하면 사용자에게 확인을 요청하지 않고 캘린더에 액세스합니다.

 

 

 

 

 

 

 

 

 

ImportError: No module named apiclient.discovery 오류가 발생하는 이유는 무엇입니까?

 

# bad
from apiclient.discovery import build

# good
from googleapiclient.discovery import build

 

 

TypeError: list indices must be integers or slices, not str

1.png

 

2.png

 

 


hoga_temp = self.hoga_stock_dict[self.hoga_x[index]]

 

list형에 숫자를 넣는게 아니라 문자를 넣어야 한다.

 


 

ValueError: invalid literal for int() with base 10: ' '
 

이러한 에러가 나는 이유

1 2 3 4와 같이 값 사이에 공백이 있는 입력을 받았는데 공백을 int로 형변환 하면 생긴다.

input이나 sys.stdin.readline()으로 입력 받으면

list = [1, ' ', 2, ' ', 3, ' ', 4] 이런식으로 리스트에 값이 들어갈 것이다.

for i in range(n):

  int(list[i])

이렇게 되면 에러가 뜰 것이다. 1은 str형이라 int형으로 변환이  가능하지만, ' '은 공백이라 매칭되는 int형 값이 나올 수 없다.

 

sys.stdin.readline().split(' ') 이렇게 split()을 써서 공백을 기준으로 분리해야한다.



 

 

 

ValueError: invalid literal for int() with base 10: '' 오류

현재가 for문으로 여러개의 데이터 조회중에 갑자기 나타난 오류??? 뭘까?

Traceback (most recent call last):

  File "연습장.py", line 362, in tr_slot

    trvalue = abs(int(trvalue.strip()))    =>>>   int(float(e))

ValueError: invalid literal for int() with base 10: ''

 

H:\python\kiwoomapi\anaconda3\키움증권>

 

 

 해결 방법

 

int 함수는 정수문자열(interger string, "3.14" 과 같은), 실수(float, 6.02)를 인자로 받기를 기대합니다만 예시와 같이 실수문자열(float string)은 넣게 되면 ValueError 가 나게 됩니다.

 

그렇다면 어떻게 하면 정수로 바꿀 수 있을까요?

먼저 바꾸려는 실수문자열을 float함수를 사용하여 실수로 바꿉니다.

그 다음 실수를 int함수를 사용하여 정수로 바꾸면 됩니다.

 

1
2
3
4
5
>>> e = '2.71'
>>> float(e)
2.71
>>> int(float(e))
2
cs

 

소수점부분이 잘려나가서 정수만 남게 되었군요 ㅎㅎ

반올림의 개념이 아닌 정수부분만 남게 된것에 주목해주세요!



출처: https://korbillgates.tistory.com/94 [생물정보학자의 블로그]

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Articles

1 2 3 4 5