2020. 9. 27. 14:57ㆍDiary/1~100
__future__ : improt 문을 분석하고 import하는 모듈을 발견하리라고 기대하는 기존 도구가 혼동하지 않게 하려고 쓴다.
즉, __future__는 파이썬 2와 3의 버전 차이로 인해 생기는 문제를 방지하고 호환이 되도록 하기 위해 사용한다.
2의 기능을 3에 가져와서 사용할수있다.
from__future__ import absolute_import : 이를 사용하면 절대 임포트(absolute_import)를 기본으로 만들 수 있다.
예를들어, glux.draw.pixmap 모듈에서 import cairo하면 glux.draw.cairo, glux.cairo, cario 순으로 임포트를 시도한다. 만약 glux.draw.cairo라는 모듈이 우연히 존재했다면 원래 의도했던 cario 모듈을 임포트하는 게 쉽지 않은 일이 된다. sys.modules를 통해서 직접 모듈을 찾아오거나, glux.draw.cairo를 glux.draw.gluxcairo 같은 이름으로 변경해야 한다. 그래서 파이썬 개발자들은 보통 패키지 내부 모듈이라도 표준 라이브러리와 겹치는 이름을 사용하길 꺼려한다.
즉, 절대 임포트(absolute_import)를 사용하면 예) glux.draw.cario가 아닌 cairo 모듈을 임포트 할 수 있다.
from __future__ import print_function : 파이썬 3에서 파이썬 2.6+로 인쇄 기능을 가져 오는 것이다.
import unicode_literals : Python 3 처럼 u 마커없이 기본 유니코드로 간주한다. 단, unicode_literals를 사용하지 않는 다른 라이브러리와의 연동시 매우 유의해야 한다.
print('안녕?')
이는 print(u'안녕?')과 같다.
absolute_import : 예를 들어 ydobon 이라는 이름의 모듈이 있고, 그 안에 우연히 numpy 라는 이름으로 특정 작업 파일을 저장해 두었다고 가정하면, 만약 ydobon 모듈 안에서 작업하다가 import numpy 라는 코드를 실행시키면 과거 파이썬 2.x 버전에서는 먼저 ydobon. numpy 라는 모듈을 먼저 불러오고, 그 다음으로 numpy 를 불러오려고 했다. 즉, 표준 numpy 라이브러리가 아닌, 로컬에서 제가 임의로 만들어둔 모듈이 우선적으로 임포트 되는 것이다. 따라서 이와 같은 상대적인 임포트가 아닌 표준 모듈을 우선적으로 임포트 시키기는 역할을 absolute_import가 해 내고 있다. 파이썬3.x 부터는 표준 라이브러리를 먼저 불러오는것이 표준이 됐다.
division : 파이썬 2.x 에서 7/4 를 하면 1이 출력됐다. 하지만 현재 사용되는 파이썬 3.x 버전에서는 7/4를 하면 1.75, 이렇게 소숫점 이하 자릿수까지 출력된다. from __future__ import division 은 파이썬 2.x 버전에서 작성된 나눗셈 코드 부분이 파이썬 3.x 환경에서 매끄럽게 작동할 수 있도록 한다. 즉, 소숫점까지 야무지게 출력되도록 하는 것이다. 만일 정수값 만을 원한다면 ‘//’ 을 사용하면 된다.
print_function : 파이썬 3.x 에서 print가 함수가 됨에따라 괄호가 꼭 필요해졌다. 그래서 이전 파이썬 2.x에서 하듯 print “ydobon” 이런 식의 출력문을 작성했다간 오류가 발생한다. 이러한 상황을 방지하는 역할을 print_function이 하고 있다.
unicode_literals : 파이썬 2.x에서는 문자열(str) 데이터 타입이 따로 있고, 유니코드(unicode)라는 것도 함께 존재했다. 하지만 파이썬 3.x 부터는 둘을 통합했다. 파이썬 2.x 에서 print type(u’ydobon’) 을 실행해 보면 <type ‘unicode’> 라는 값이 반환된다. 반면 파이썬 3.x 에서 print (type(u’ydobon’)) 을 실행하면, <class ‘str’> 으로 값이 반환되는 것을 확인할 수 있다. str과 unicode의 통일을 이룬 파이썬3.x의 특성대로 코드가 실행될 수 있도록 하는 역할을 unicode_literals 가 하고 있다.
os.path : 파일명과 파일경로에 대한 유용한 함수들을 많이 제공하고 있다.
------------------------------------
현재 작업 폴더 얻기 : os.getcwd() ==> # "C:\Temp"
디렉토리 변경 : os.chdir("C:\Tmp")
특정 경로에 대해 절대 경로 얻기 : os.path.abspath(".\\Scripts") ==> "C:\Python35\Scripts"
경로 중 디렉토리명만 얻기 : os.path.dirname("C:/Python35/Scripts/pip.exe") ==> "C:/Python35/Scripts"
경로 중 파일명만 얻기 : if os.path.isfile("C:/Python35/Scripts/pip.exe"): print(os.path. basename("C:/Python35/Scripts/pip.exe")) ==>"pip.exe"
경로 중 디렉토리명과 파일명을 나누어 얻기 : dir, file = os.path.split("C:/Python35/Scripts/pip.exe")
파일 각 경로를 나눠 리스트로 리턴하기
os.path.sep은 OS별 경로 분리자 : "C:\Python35\Scripts\pip.exe".split(os.path.sep) ==> ['C:', 'Python35', 'Scripts', 'pip.exe']
경로를 병합하여 새 경로 생성 : os.path.join('C:\Tmp', 'a', 'b') ==> "C:\Tmp\a\b"
디렉토리 안의 파일/서브디렉토리 리스트 : os.listdir("C:\Python35")
파일 혹은 디렉토리 경로가 존재하는지 체크하기 : os.path.exists("C:\Python35")
디렉토리 경로가 존재하는지 체크하기 : os.path.isdir("C:\Python35")
파일 경로가 존재하는지 체크하기 : os.path.isfile("C:\Python35\python.exe")
파일의 크기 : os.path.getsize("C:\Python35\python.exe")
------------------------------------
os : os 모듈은 Operating System의 약자로서 운영체제에서 제공되는 여러 기능을 파이썬에서 수행할 수 있게 해준다. 예를 들어, 파이썬을 이용해 파일을 복사하거나 디렉터리를 생성하고 특정 디렉터리 내의 파일 목록을 구하고자 할 때 os 모듈을 사용하면 된다.
os.getcwd() ==> 현재 경로를 얻을 수 있다.
os.listdir() ==> 특정 경로에 존재하는 파일과 디렉터리 목록을 구한다.
os.chdir("디렉토리 경로") ==> 디렉토리 변경
csv파일 호출 ==> pd.read_csv("파일 이름")
- csv(comma seperated value) : 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일
sys : 파이썬 인터프리터를 제어할 수 있는 방법을 제공한다.
- 인터프리터(interpreter), 해석기 : 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.
sys.argv : 명령 행에서 인수 전달하기
sys.exit : 강제로 스크립트 종료하기
sys.path : 자신이 만든 모듈 불러와 사용하기
sys.copyright, sys.version : 설치된 파이썬의 저작권, 버전을 나타냅니다.
sys.getdefaultencoding() : 현재 사용중인 기본 문자열 인코딩을 반환합니다.
sys.stdin, sys.stdout, sys.stderr : 표준 입력, 출력, 에러 스트림에 대응되는 파일 객체들을 나타냅니다.
'Diary > 1~100' 카테고리의 다른 글
30일차 파이썬 백신개발 -5 (0) | 2020.09.29 |
---|---|
29일차 파이썬 백신개발 -4 (0) | 2020.09.28 |
27일차 Code Up 문제풀이 (0) | 2020.09.26 |
26일차 Code Up 문제풀이 (0) | 2020.09.25 |
25일차 파이썬 백신 제작 -2 (0) | 2020.09.24 |