Python 33

[python3] yaml 다루기

python3 에서 yaml 파일을 다루려면 pyyaml 패키지를 먼저 설치해야 합니다. python3 -m pip install pyyaml 패키지가 없어서 소스에서 설치할 때는 setup.py 를 실행시킵니다. python3 setup.py install 사용할 때는 yaml 만 언급하면 됩니다. import yaml 읽기 - 방법1 test = yaml.load(file("/home/me/test.yaml", "r"), Loader=yaml.SafeLoader) 읽기 - 방법2 data = """ a: 0 b: [1, 2] c: false d: 2.456 """ test = yaml.load(data, Loader=yaml.SafeLoader) ※참고로 Loader 지정 안하면 경고가 따라다닙니다...

IT/python 2023.01.19

[python3] 파일 목록 정렬해서 가져오기

기록용으로 남깁니다. os.listdir() 함수로 파일 목록을 가져왔는데 정렬이 되어 있지 않았습니다. 이름대로 반환되는 결과물이 리스트일꺼라고 생각하고 os.listdir().sort() 를 호출했는데 Nonetype 은 sort 할 수 없다는 오류가 떳습니다. 인터넷을 뒤져서 sorted(os.listdir()) 로 원하는 결과는 얻었습니다. 다만, 왜 안되는지는 정확히 알 수 없었습니다. 알게 되면 글 내용을 업데이트하겠습니다. 추정하기로는 iterable 한 객체가 os.listdir() 에서 반환되고 있고, .sort() 는 이를 지원하지 못하고 sorted() 는 이를 지원할 수 있다?? 정도인데 절대로 사실이 아닐 확률이 높을 수 있으니 이유는 각자 찾아보시기 바랍니다.

IT/python 2022.08.18

[python] 파일 업로딩용 http 서버 예제

기록용으로 남깁니다. 윈도우 서버에서 파일 업로딩이 급할 때 쓸 수 있는 http file server 라는 프로그램이 있습니다. 문제는 이 프로그램이 공유기 상의 포트포워딩을 사용하는 환경에서 잘 동작하지 않습니다. 제공되는 웹페이지에 직접 들어가서 하나 하나 업로드하는 것은 가능하지만 클라이언트 쪽에서 curl 등을 통해 자동 업로드 하는 데에는 문제가 있었습니다. 공유기의 DMZ 기능을 쓸 수 있는 상황도 아닙니다. 인증이 필요없이 잠깐 열었다 닫는 파일 업로딩 용도이고, cli 상에서 실행 가능하여 자동화할 수 있어야 하며, 파일 이름을 변경할 수 있는 기능(원본 aa.png 를 1111-aa.png 로 변경)까지 제공되야 하고, 공유기 환경에서도 동작해야하는데, 그 기능들을 모두 만족하는 프로그..

IT/python 2022.04.12

[chrome][onetab] 플러그인 업데이트로 재설치 후 이전 기록 안보일 때 목록이라도 건지는 방법...

기록용으로 남깁니다. Google chrome 브라우저에서 플러그인 업데이트가 떠 있길래 실행했는데 onetab 이 업그레이드 된 후 기존 내용이 다 날라가고 안보입니다.. 이래저래 복구할 수 있는 방법 없을까 찾아봤는데 잘 안되었습니다.. 어찌어찌 검색으로 찾다보니 C:\Users\my_loginid\Chrome\User Data\Default\Local Extension Settings\chphlpgkkbolifaimnlloiipkdnihall 라는 폴더를 알게 되었습니다. 그 안에 2MB 짜리 ldb 가 여러개 있더라구요. 열어봤더니 url 일부가 있었습니다!! 하나님께 감사드리며 이제 이 파일을 복구해보려고 시도를 했는데 안됩니다.. 그래 목록이라도 추출해보자 했는데 안됩니다.. 찾아보니 Goog..

IT/web 2022.01.03

[python] magic number

기록용으로 남깁니다. 파이썬이 실행되어 생성되는 *.pyc 파일에는 사용된 파이썬 버전 정보가 파일 맨 처음 4바이트에 저장되어 있습니다. 보통은 bad magic number 등의 문제가 생기면 *.pyc 파일을 지우고 재생성하면 되는데 그렇지 못한 상황을 위해 기록으로 남깁니다. 문제가 되는 pyc 파일의 첫 4바이트를 little endian 으로 직접 읽어서 확인하셔도 되고, 정상적으로 접근 가능한 환경이 있는 경우에는 코드로 확인하셔도 됩니다. # python 2.x 대 import imp imp.get_magic().encode('hex') 'd1f20d0a' # python 3.x 대 import importlib importlib.util.MAGIC_NUMBER.hex() '420d0d0a..

IT/python 2021.10.05

[python3] a bytes like object is required not 'str' 오류

기록용으로 남깁니다. 제목과 같은 오류 발생시 split() 등의 함수를 사용할 때 나타날텐데 넘어온 값이 str 이 아니라 bytes 로 되어 있어서 발생하는 오류입니다. 혹시 모르니 type 으로 자료형을 확인하거나 print 로 직접 출력해서 bytes 로 되어 있는 것을 확인해봅시다. bytes -> str 은 간단합니다. string_variable.decode() 하면 str로 변환됩니다. 이 결과물에 split()을 하던 다른 함수를 사용하면 되겠습니다.

IT/python 2021.07.16

[python3][vscode][pylance] operator "in" not supported for types literal and str int float 26,12 오류 끄기

기록용으로 남깁니다. vscode 에서 Ctrl + , 키를 눌러 설정 창을 엽니다. Search settings 항목에 pylance를 입력합니다. 어느 영역에 적용할 지에 따라 User, Remote, Workspace 탭을 선택합니다. User는 전역, Remote는 원격 접속시, Workspace 는 현 작업공간에 적용됩니다. 저는 일단 Workspace 를 선택했습니다. 항목을 보면 Python > Analysis: Type Checking Mode 라고 되어 있는 부분이 있습니다. off/basic/strict 의 3가지 값을 고를 수 있는데 이 오류는 off 를 선택해야 나오지 않았습니다. 경고를 끄면 정작 도움이 필요할 때 얻지를 못하니 신중하게 생각하고 결정하시기 바랍니다.

IT/python 2021.06.24

[python] json.dumps object of type bytes is not json serializable

기록용으로 남깁니다. dict 자료형으로 패킷 교환을 통해 ipc 를 잘 수행해왔는데 코드를 조금 수정하니 제목처럼 dumps 는 byte 자료형으로는 json 직렬화를 못한다는 오류를 보게 되었습니다. 뭘까 하며 코드를 보다 보니 기존 dict 에 bytes 값을 추가한 것이 눈에 띄었습니다. 감사하게도 순수 이진값이 아니라 base64로 인코딩된 byte 문자열이라서 해당 값을 decode 를 사용해서 문제를 쉽게 해결했습니다.

IT/python 2020.12.22