본문 바로가기

분류 전체보기50

파이썬(Python) 외부 프로그램 실행하기 파이썬 3.5 이후 버전에서 다른 프로그램을 실행하기 위해서는 subprocess 모듈의 run() 함수를 사용하면 됩니다. subprocess.run()은 실행후 외부 프로그램이 실행 왼료되면 CompletedProcess를 반환하며 returncode등의 결과를 가지고 있습니다. >>> import subprocess >>> a = subprocess.run(['ls', '-al']) total 0 drwxr-xr-x 2 jlim staff 64 11 Sep 23:45 . drwxr-xr-x 9 jlim staff 288 11 Sep 23:45 .. >>> print(a) CompletedProcess(args=['ls', '-al'], returncode=0) 파이썬 3.5 이전 버전을 사용하고 있.. 2020. 9. 11.
파이썬(Python) yield 키워드 이해하기 파이썬 코드를 보다면 yield라는 녀석이 종종 보이긴 하는데 그 의미가 직관적으로 와닿지는 않습니다. 이 포스팅에서 조금 쉽게 yield를 이해 해보는 시간을 갖도롤 하겠습니다. yield를 이해하기 위해서는 Iterable과 Generator를 이해하고 있어야 합니다. Iterable을 알아보기 위해 리스트는 순회하면서 리스트 아이템들을 출력하는 코드를 작성했습니다. my_list = [1, 2, 3] for i in my_list: print(i) # 1 # 2 # 3 위의 코드에서 my_list는 Iterable입니다. 즉, for ~ in ~ 구문에 넣어서 그 아이템들을 순회(Iteration) 할 수 있는 것들은 모두 Iteration이라고 볼 수 있습니다. 그래서 Iteration 가능한 딕.. 2020. 9. 11.
파이썬(Python) if __name__ == '__main__': 은 무엇일까? 파이썬 인터프리터는 파이썬 스크립트가 실행될 때 __name__ 과 같은 스페셜한 변수들에게 값을 할당합니다. 아래와 같은 my_module.py 라는 스크립트를 작성해 볼께요. # my_module.py def my_name(): print('J Builder') if __name__ == '__main__': my_name() 이 스크립트를 파이썬 인터프리터가 실행을 하면 __name__ 변수에 '__main__' 이라는 문자열값이 할당이 됩니다. ➜ python_test python my_module.py J Builder 그럼 질문이 하나 생길텐데요. 아래 test_module.py처럼 그냥 if __name__ == '__main__': 구문 없이 my_name() 함수를 호출하면 안될까요? #.. 2020. 9. 11.
파이썬(Python) 문자열을 in-place로 수정하는 방법 파이썬의 문자열은 immutable 타입이기 때문에 in-place로 문자열을 수정할 수는 없습니다. 하지만 io.StringIO를 사용하면 in-place로 object의 문자열 수정이 가능합니다. io.StringIO를 사용하는 방법은 다음과 같습니다. from io import StringIO s = "J-Build is awesome!" sio = StringIO(s) s = sio.getvalue()# sio의 문자열값을 읽습니다. print(s) # J-Build is awesome! isinstance(s, str)# s는 str 타입입니다. # True # 'awesome' 이후부터 내용을 수정하기 위해서는, # sio 오브젝트의 내부 포인터를 'awesome'의 시작 인덱스로 옮겨줘야 합.. 2020. 9. 10.
파이썬(Python) 2진수 10진수로 변환하기 먼저 10진수를 2진수로 변환은 bin() 함수를 통해서 가능합니다. b = bin(16) print(b) # 0b10000 2진수를 다시 10진수로 변환하기 위해선 int() 함수를 사용해 주면 됩니다. a = int('0b10000', 2) print(a) # 16 2020. 9. 10.
파이썬(Python) 8진수 16진수 정수 표현하기 8진수 정수는(octal integer)는 숫자 0과 영문 소문자 o 또는 대문자 O를 써주고 정수를 바로 써주면 됩니다. a = 0o10 print(a) # 8 16진수 정수는(hexadecimal integer는 숫자 0과 영문 소문자 x 또는 대문자 X를 써주고 정수를 바로 써주면 됩니다. a = 0x10 print(a) # 16 2020. 9. 10.