728x90
반응형

파이썬에서 subprocess 를 쓰다보면 종종 발생한다.

subprocess.call([path1, path2]) 형식의 명령어를 쓰다가 에러가 났고

subprocess.call([path1, path2], shell=True) 식으로 처리해서 해결했다.

에러 그림


다른 방법도 있다고 한다.(재부팅이라던지..)

원리는 아래와 같다.

shell = True로 실행 시 일반 shell에서 명령을 내리는 것과 동일하게
별도 유효성 검사 없이 실행이 된다.

그 뜻은 shell = True 설정을 안넣으면, 디폴트로 false로 잡히니까
유효성 검사가되고, 거기서 에러가 날 수 있다는 거같다.

기술문서 상으로는 추천하는 로직이 아니라고 한다(shell injection에 취약)

근데 에러나서 못하는 것보다 실행을 시켜야되지 않을까.(그냥 자동화 도구니..)

 

참조 문서 : https://docs.python.org/2/library/subprocess.html

 

17.1. subprocess — Subprocess management — Python 2.7.18 documentation

17.1. subprocess — Subprocess management The subprocess module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older modules and functions: os.system os.s

docs.python.org

 

-끝이다-

728x90
반응형
728x90
반응형

코드 짠김에 정리한다.


import time


time.sleep(60) # 1분간 sleep

time.sleep(10) # 10초간 sleep

time.sleep(1) # 1초간 sleep

sleep 이 초 단위라는 것만 기억하면된다.

 


javascript는 1000이 1초다.

setInterval(test, 3000);

 

-끝-

728x90
반응형
728x90
반응형

TypeError: string indices must be integers 에러 의미

직역 그대로다.

 

index_t에 'abcde'라는 str(문자열)을 담았다.

 

index_t[0]은 'a' 다.

그리고 0,1,2,3,4 는 1~5번째의 값을 의미한다.

(왜냐. 컴터는 0부터 세니까, 다 아시겠지마는)


 

무튼 string indices must be integers 에러는

 

문자열의 인덱스 즉[값]에 정수만 넣으라는 의미다.

문자열의 값은 0(첫번째 데이터), 1(두번째 데이터) 가져오는데

1.1, 1.2 이러면 'a'도 아니고 'b'도 아니니 에러가 나는것이다.

 


 

string index out of range 에러는

아래 그림과 같이 'a', 'b', 'c', 'd', 'e' 5개의 데이터만 있는데 

범위를 넘어서는 요청을 하면 에러가 난다.

 


 

 

끝이다.

 

728x90
반응형
728x90
반응형

피들러랑 파이썬 requests 모듈 같이 사용하기

검색해보다가 검색 내용처럼 안되서 버프 방식으로 시도했더니 된다.


import os

proxy = '127.0.0.1:8888'
os.environ['HTTP_PROXY'] = proxy
os.environ['HTTPS_PROXY'] = proxy
os.environ['REQUESTS_CA_BUNDLE'] = r'.\FiddlerRoot.pem'

위와 같이 셋팅하고 테스트 하면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
728x90
반응형

[상황]

파이썬에서 다수의 [특문+문자]를 str로 처리하고(1)

base64로 인코딩(2) 해야되는 케이스가 있었다.

 

근데.. 파이썬을 썼다가 안썼다가 하니.. 에러가 주구장창 나서 스트레스르 받았다.

이에 해당 이슈 정리


[발생한 에러 종류]

ValueError: string argument should contain only ASCII characters

TypeError: a bytes-like object is required, not 'str'

UnicodeEncodeError: 'ascii' codec can't encode characters in position 359-361: ordinal not in range(128)


[요약]

<방법1>

utf-8로 변환하고 bs64인코딩, utf-8 디코딩

bs64디코딩 후 utf-8 디코딩

 

text = '임의값 입력'
bs64_text=(base64.b64encode(text.encode('utf-8')))
enc_text=bs64_text.decode('utf-8')
print(enc_text)

print('개행 테스트\n\n\n')

data1 = base64.b64decode(enc_text)
data2 = data1.decode('utf-8')
print(data2)

 

<방법2>

str => encode() = bytes
bytes => decode() = str

mytext_bytes = mytext.encode()  #bytes
mytext_str = mytext_bytes.decode() #str 

encoded=(base64.b64encode(mytext.encode())) #bytes 된거 base64로

tmp = base64.b64decode(encoded) # base64 디코딩

print(tmp.decode()) #base64 디코딩된거 str로

[상세1]

encoded=base64.b64encode(mytext) 실행 시 에러1 발생
 
[에러1]
 TypeError: a bytes-like object is required, not 'str'

<원인> : base64 인코딩할 때 bytes type이 필요해서 에러 터짐

<해결>
str => encode() = bytes 되고
bytes => decode() = str 됨
또는 utf-8로 형변환 함

<예제>
mytext_bytes = mytext.encode()  #bytes
mytext_str = mytext_bytes.decode() #str

########################################################################################################
########################################################################################################


encoded=(base64.b64encode(mytext.encode('ascii'))) 실행 시 에러2 발생
에러3은 원인 까먹음

[에러2,3]
 UnicodeEncodeError: 'ascii' codec can't encode characters in position 359-361: ordinal not in range(128)
 ValueError: string argument should contain only ASCII characters

<원인/해결>
파이썬 디폴트는 unicode 사용 
한글 사용하려면 unicode를 utf-8로 변환해서 사용 가능  
unicode를 utf-8로 encoding ㄱㄱ

<예제>
encoded=(base64.b64encode(mytext.encode('utf-8'))) # utf-8 변환 또는
encoded=(base64.b64encode(mytext.encode())) # bytes 변환

 

-끝-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p.s.

아래 사이트를 참고하여 해결하려 했으나. ascii 인코드 수행 시 에러나서 utf-8로 시도하니 됬다.

https://techexpert.tips/ko/python-ko/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B2%A0%EC%9D%B4%EC%8A%A464-%EC%9D%B8%EC%BD%94%EB%94%A9/

 

728x90
반응형
728x90
반응형

개발하고, 까먹고

개발하고, Javascript 공부하다 까먹고..

그래서 정리합니다.

 

1. GET 방식 보내기

import requests

url = 'https://www.naver.com'

response = requests.get(url)

#상태코드
print(response.status_code)

#UTF-8 형식의 text
print(response.text)

#바이너리 원문 
#print(response.content)

#json
#print(response.json())

 

2. POST 방식 보내기

 

3. Header, Cookie, 

 

4. with

 

5. 세션 

 

 

 

 

기계 - 기계 - 기계 > {휴먼} > 아웃풋

728x90
반응형
728x90
반응형

포스팅할 이유가 없다. 아래에 설명 잘됨

 

*사용 효과  :  가독성/간결성, this 활용

 

https://codingapple.com/unit/es6-3-arrow-function-why/

 

Arrow function은 function을 대체하는 신문법이 아님 - 코딩애플 온라인 강좌

0:00 Arrow function 문법 1:17 왜 쓰는지 장점 3개 정리 4:28 Arrow function 실생활 사용 예시 & this값에 대하여 ES6 문법 이후부터는 자바스크립트에서 함수를 만들 수 있는 문법이 새롭게 하나 등장했습니

codingapple.com

 

샘플

(()=>alert())()
var ddd = (x) => {return x*2 }
var fff=x=>alert(x)
setTimeout(()=>{ console.log('aaaaaa');},100);​

 

 

 

 

728x90
반응형
728x90
반응형

한글이나 다른 인코딩 인식 안될경우 syntax error 발생함

 

그럴때 코드 상단에 아래 내용 입력

# -*- coding: utf-8 -*-

 

 

종종 이어서 작성 예정

728x90
반응형
728x90
반응형

 

원래 깃을 안좋아한다. (개인적으로 쓰기 불편함)

 

근데.. 점점 토이 프로젝트가 많아질수록 로그/형상관리의 필요성을 느낀다.

(디펜던시 계속 까먹음 ㅋㅋㅋㅋ)

 

고로 깃을 다시 시작하는 김에 난중에 기억하기 위해 포스팅 진행

 

필자가 깃을 사용하려는 목적은

 

토이프로젝트를 등록하고, 이력관리를 하는 것이다.

 

 

#1 리포지토리와 프로젝트

 

근데 위 그림을 보면, 1.리포지토리, 2.프로젝트 가 존재한다.

 

개인적으로 프로젝트를 관리하는건 [리포지토리]라고 보면된다.

협업/실무 형식으로 개발할 때 사용하는 것이 [프로젝트]라고 한다.

(퀵한 검색 결과 ㅋㅋ)

 


 

#2 리포지토리의 퍼블릭 프라이빗

* Public - 공개

* Private- 비공개

 

라고 보면된다. 깃은 유료버전(프로)가 있는데

 

과거에는 유료버전에서만 private를 사용할 수 있었다고 한다.

 

필자가 처음 쓸때는 깃이 무료 플랫폼이었는데... 마소가 인수하고 유료기능이 추가됨

(뭐 안정성은 늘었으나.. 할많하않)

 


 

#3 깃허브 무료 계정과 유료 계정(프로)

하기 페이지를 살펴본 결과, 유료계정은 프라이빗 리포지토리를 더욱 효과적으로 활용가능하다.

https://github.com/settings/billing/plans

 

GitHub: Where the world builds software

GitHub is where over 73 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

좌측 : 무료 / 우측 : 프로

 

GitHub Actions : 프로젝트를 빌드, 테스트, 릴리즈 또는 배포를 지원하는 기능으로서, Github에서 제공하는 CI/CD 도구

GitHub Packages : GitHub 의 리소스를 패키지 관리자를 통해 받을 수 있도록 패키지로 등록/관리하는 서비스

 


 

#4 기타 리포지토리 생성 시, 관련 파일

 

Add a README file

소개 파일

 

Add .gitignore

로컬 환경의 정보나 빌드 정보등 원격 저장소에 관리하지 말아야되는 파일들에 대해서 지정하여 원격 저장소에 실수로 올라가지 않도록 관리하는 파일

 

Choose a license

라이센스 (BSD, MIT 등)을 표시하는 파일~

 


종종 이어서 업뎃예정

728x90
반응형

'프로그래밍 > webdev' 카테고리의 다른 글

#1 제트브레인(JetBrain) 라이센스 확인  (0) 2021.12.23
728x90
반응형

그래들로 개발테스트 하는데, Data 어노테이션이 안됬다.

@Data 빨간불

 

디폴트로 사용 못하고 의존성 추가해줘야됬었다.

 

인식 완료

@Data lombok

 

참고사이트(https://gre-eny.tistory.com/303)

 

 

End


 

728x90
반응형

+ Recent posts