- os 모듈
- chdir()
- getcwd()
- os.listdir(path)
- os.midkr(path[, mode])
- os.makedirs(path[, mode])
- os.remove(path), os.unlink(path)
- os.rmdir(path)
- os.removedirs(path)
- os.rename(src, dst), os.renames(src, dst)
- os.stat(path)
- os.utime(path, times)
- os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
- os.pipe()
- os.fdopen(fd[, mode[, bufsize]])
- os.name
- os.getpid(), os.getppid()
- os.getenv(varname[, value])
- os.putenv(varname, value)
- os.strerror(code)
os 모듈
chdir()
chdir()
함수는 현재 작업 디렉터리 위치를 변경한다.
getcwd()
getcwd()
함수는 현재 작업 디렉터리의 위치를 가져온다.
import os
print(os.getcwd())
os.chdir('tool')
print(os.getcwd())
/Users/gy8971/Desktop/gid/1.Programming/Python
/Users/gy8971/Desktop/gid/1.Programming/Python/tool
os.listdir(path)
os.listdir(path)
는 해당 경로에 존재하는 파일과 디렉터리 목록을 반환한다.
import os
print(os.listdir('.'))
['.DS_Store', ':momory', 'init.py', 'test.db', '.vscode', 'tool']
os.midkr(path[, mode])
os.midkr(path[, mode])
는 [path]에 해당하는 디렉터리를 생성한다.
import os
os.mkdir('test_dir')
print(os.listdir('.'))
['.DS_Store', ':momory', 'test_dir', 'init.py', 'test.db', '.vscode']
os.makedirs(path[, mode])
-
os.makedirs(path[, mode])
는 인자로 전달된 디렉터리를재귀적
으로 생성한다. -
이미 디렉터리가 존재하거나 권한이 없는 경우
예외
를 발생시킨다. -
아래 예제는 test를 먼저 생성하고 [ sub1, sbu2, leaf ] 를 순차적으로 생성한다.
import os
os.makedirs('test/sub1/sub2/leaf')
print(os.listdir('test/sub1/sub2'))
os.makedirs('test/sub1/sub2/leaf')
['leaf']
Traceback (most recent call last):
File "/Users/gy8971/Desktop/gid/1.Programming/Python/init.py", line 5, in <module>
os.makedirs('test/sub1/sub2/leaf')
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/os.py", line 220, in makedirs
mkdir(name, mode)
FileExistsError: [Errno 17] File exists: 'test/sub1/sub2/leaf'
os.remove(path), os.unlink(path)
os.remove(path)
,os.unlink(path)
는 파일을 삭제한다.
import os
os.remove('test.txt')
os.unlink('test.txt')
os.rmdir(path)
os.rmdir(path)
는 디렉터리를 삭제한다. 단 디렉터리는 비어 있어야 한다.
import os
os.rmdir('test')
os.removedirs(path)
-
os.removedirs(path)
디렉터리를 연달아 삭제한다. -
아래 예제의 경우 leaf 디렉터리 삭제에 성공하면 차례로 [ sub2, sub1, test ]의 순서로 삭제된다.
import os
os.removedirs('test/sub1/sub2/leaf')
os.rename(src, dst), os.renames(src, dst)
-
os.rename(src, dst)
는 src를 dst로 이름을 변경하거나 이동한다. -
os.renames(src, dst)
는 src를 dst로 이름을 변경하거나 이동한다.
rename과 다른 점은 이동 시 필요한 디렉터리를 자동으로 생성한다. -
파일이나 디렉터리에 대해 모두 적용된다.
import os
os.rename('text.txt','renamed.txt')
os.renames('text.txt','test/move.txt')
['move.txt']
os.stat(path)
-
os.stat(path)
는 경로에 해당하는 정보를 얻어온다. -
protection, inode, device, link, user id, group id, size, last access time, last modified time, last change time
import os
print(os.stat('test/move.txt'))
os.stat_result(st_mode=33188, st_ino=8594660815, st_dev=16777221, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1518321545,st_mtime=1518321545, st_ctime=1518321684)
os.utime(path, times)
-
os.utime(path, times)
는 경로에 해당하는 파일에 대해액세스 시간
과수정 시간
을 [times]로 수정한다. -
[times]가 None일 경우는 현재 시간으로 수정한다.
-
유닉스의
touch
명령어와 유사하다.
import os
print(os.stat('test/move.txt'))
os.utime('test/move.txt', None)
print(os.stat('test/move.txt'))
os.stat_result(st_mode=33188, st_ino=8594660815, st_dev=16777221, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1518321545,st_mtime=1518321545, st_ctime=1518321684)
os.stat_result(st_mode=33188, st_ino=8594660815, st_dev=16777221, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1518321959,st_mtime=1518321959, st_ctime=1518321959)
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
-
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
는 top으로 지정된 디렉터리를 순회하며 경로, 디렉터리명을 순차적으로 반환한다. -
다음 구조로 디렉터리를 만들고 실행해보자.
- test
+ a
+ b
+ readme.txt
import os
for path, dirs, files in os.walk('test'):
print(path, dirs, files)
for path, dirs, files in os.walk('test', topdown=False):
print(path, dirs, files)
test ['a', 'b'] []
test/a [] []
test/b [] ['readme.txt']
test/a [] []
test/b [] ['readme.txt']
test ['a', 'b'] []
os.pipe()
-
os.pipe()
는파이프
를 생성한다. 함수를 실행하면 Read / Write 전용 파이프의파일 디스크립터
가 반환된다. -
파이프
는 주로 부모 프로 / 자식 프로세스 간의 통신을 목적으로 사용한다. -
파이프
란 프로세스 간 통신을 위한 공유 영역이다. -
여러 프로세스 간에 정보를 주고받기 위해 만들어지는 공간이며, 하나의 프로세스가 정보를 쓰면 다른 프로세스에서 읽을 수 있다.
import os
print(os.pipe())
(3, 4)
os.fdopen(fd[, mode[, bufsize]])
os.fdopen(fd[, mode[, bufsize]])
는 파일 디스크립터를 이용해 파일 객체를 생성한다.
import os
r, w = os.pipe()
rd = os.fdopen(r)
wd = os.fdopen(w)
print(r)
print(w)
print(rd)
print(wd)
3
4
<_io.TextIOWrapper name=3 mode='r' encoding='UTF-8'>
<_io.TextIOWrapper name=4 mode='r' encoding='UTF-8'>
os.name
os.name
은 파이썬이 실행되는 운영체제의 이름을 나타낸다. ‘nt’, ‘posix’, ‘mac’ 등의 결과가 반환된다.
import os
print(os.name)
posix
os.getpid(), os.getppid()
-
os.getpid()
는 현재 프로세스 아이디를 반환한다. -
os.getppid()
는 부모 프로세스 아이디를 반환한다.
import os
print(os.getpid())
print(os.getppid())
14441
13493
os.getenv(varname[, value])
-
os.getenv(varname[, value])
는 환경 변수값을 얻어 온다. -
해당 환경 변수가 없을 경우에는 인잘로 전달된 [value] 값을 반환한다.
-
[value]값 없이 [varname]만 넘겼을 경우 환경 변수가 없으면 None을 반환한다.
import os
print(os.getenv('homepath'))
print(os.getenv('tmp','1'))
None
1
os.putenv(varname, value)
-
os.putenv(varname, value)
은 환경 변수 [varname]을 [value]로 설정한다. -
자식 프로세스에게 영향을 미친다.
import os
print(os.getenv('test'))
os.putenv('test','putenv_test')
print(os.getenv('test'))
os.strerror(code)
os.strerror(code)
는 에러 코드에 해당하는 에러 메시지를 보여준다.
import os
print(os.strerror(0))
print(os.strerror(1))
print(os.strerror(2))
print(os.strerror(3))
print(os.strerror(404))
Undefined error: 0
Operation not permitted
No such file or directory
No such process
Unknown error: 404