상세 컨텐츠

본문 제목

파이썬 경로 확인, import os, pickle, sys

Coding/Python

by 세미531 2022. 1. 23. 01:31

본문

728x90
  • import sys : sys 모듈은 파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈

1. 모듈 불러와서 사용하기 (sys.path)

sys.path 는 파이썬 모듈들이 저장되어 있는 위치를 나타낸다. 이 위치에 있는 파이썬 모듈은 경로에 상관없이 어디에서나 불러올 수 있다.

>>> import sys
>>> sys.path
['', 'C:\\Windows\\SYSTEM32\\python37.zip', 'c:\\Python37\\DLLs', 
'c:\\Python37\\lib', 'c:\\Python37', 'c:\\Python37\\lib\\site-packages']
>>>

2. 경로 추가하기

import sys

sys.path.append("C:/usr/mycode")

 

위와 같이 파이썬 파일에서 sys.path.append 를 사용하면 경로 이름을 추가할 수 있다. 이렇게 하면 C:/usr/mycode 디렉터리에 있는 파이썬 모듈을 불러와서 사용할 수 있다.

 

#파일 경로를 표시할 때 명령 프롬프트 창에서는 / , \ 다 상관 없지만 소스코드 안에서는 / 를 사용해야 한다.

 

  • import pickle

pickle 은 객체의 형태를 그대로 유지하면서 파일에 저장하고 불러올 수 있게 하는 모듈이다. pickle 모듈의 dump 함수는 딕셔너리 객체인 data 를 그대로 파일에 저장한다.

>>> import pickle
>>> f = open("test.txt", 'wb')
>>> data = {1: 'python', 2: 'you need'}
>>> pickle.dump(data, f)
>>> f.close()

다음 pickle.dump 로 저장한 파일을 pickle.load 를 사용하여 원래 있던 딕셔너리 객체 상태 그대로 불러온다.

>>> import pickle
>>> f = open("test.txt", 'rb')
>>> data = pickle.load(f)
>>> print(data)
{2:'you need', 1:'python'}

 

 

  • import os

os 모듈은 환경 변수나 디렉터리, 파일 등의 os 자원을 제어할 수 있게 해주는 모듈이다. 

 

- 내 시스템의 환경 변수값을 알고 싶을 때 -> os.environ

필자의 시스템의 PATH 환경 변수 내용을 보면 아래와 같이 표시된다.

>>> os.environ['PATH']
'C:\\ProgramData\\Oracle\\Java\\javapath;...생략...'

 

- 디렉터리 위치 변경 -> os.chdir

os.chdir("C:\WINDOWS")

 

- 디렉터리 위치 돌려받기(현재 위치) -> os.getcwd

os.getcwd()

'C:\WINDOWS'

 

- 시스템 명령어 호출하기 -> os.system

시스템 자체의 프로그램이나 기타 명령어를 파이썬에서 호출한다. os.system("명령어") 로 사용한다. 현재 디렉터리에서 시스템 명령어 dir을 실행하면 아래와 같다.

os.system("dir")

 

- __file__

이 코드는 해당 코드를 가지는 파이썬 파일의 이름 혹은 경로이며 실행한 위치에서의 상대경로를 포함한다.

import os

print(__file__)

 

- 절대경로 구하기 -> os.path.abspath()

아래는 실행 위치와 상관없이 파이썬 파일의 절대경로를 가질 수 있다.

import os

path = os.path.dirname(os.path.abspath(__file__))
print(path)

 

아래와 같이 사용하면 해당 경로에 있는 파일 리스트 이름들을 나열할 수 있다.

import os

path = os.path.dirname(os.path.abspath(__file__))

for files in os.listdir():
	p = os.path.abspath(files)
    print(p)

 

- 상대경로 구하기 -> os.path.relpath()

import os

path = os.path.dirname(os.path.relpath(__file__))
print(path)

 

- 하위 디렉터리 검색 -> os.walk(path)

os.walk() 은 인자로 받은 경로에 대해 하위 디렉터리를 검색한다.

import os

PATH = os.path.dirname(os.path.abspath(__file__))

#위의 PATH 결과로 나온 dir_name

dir_name = 'data'

for path, dirs, files in os.walk(dir_name):
	print(path, dirs, files)

 

- os.path.join

import os

PATH = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'

for path, dirs, files in os.walk(dir_name):
	print(os.path.join(PATH, path))

 

- os.path.splitext() 특정 확장자 추출 가능

import os

PATH = os.path.dirname(os.path.abspath(__file__))
dir_name = 'data'

for path, dirs, files in os.walk(dir_name):
	dir_path = os.path.join(PATH, path)
    for file in files:
    	name, ext = os.path.splitext(file)
        if ext == '.png':
        file_path = os.path.join(dir_path, file)
        print('find file : ', file_path)

 

 

 

728x90

관련글 더보기

댓글 영역