파일 다루기
- 파일 목록 얻기
print os.listdir('.') # 현재 디렉토리 전체 -> .
print os.listdir('../') # 상위 디렉토리 전체 -> ../
----------------------------------------------------------------------------------------
(실행 결과)
['end.txt', 'file.py', 'inout.py', 'out2.py', 'pickle.py', 'pickle.pyc', 'pickle.txt', 't.txt']
- 파일 종류 알아보기
----------------------------------------------------------------------------------------
def filetype(fpath): # 세 함수를 사용해서
print fpath,':',
if os.path.isfile(fpath): # 파일이면 True
print "File"
if os.path.isdir(fpath): # 디렉토리면 True
print "Directory"
if os.path.islink(fpath): # 링크파일이면 True
print "Link File"
list=os.listdir('.') # 현재 경로에있는 모든 파일을 탐색
for fname in list:
filetype(fname)
----------------------------------------------------------------------------------------
(실행 결과)
end.txt : File
file.py : File
inout - 바로 가기.lnk : File # 왜 링크파일이 아니라 그냥 File로 출력되는 지 모르겠습니다.
inout.py : File
out2.py : File
pickle.py : File
pickle.pyc : File
pickle.txt : File
t.txt : File
----------------------------------------------------------------------------------------
- 파일의 허가권
----------------------------------------------------------------------------------------
리눅스 처럼 rwx를 출력하는 코드를 짜봤습니다. 함수를 정의 할때에는 줄을 띄어쓰지 않도록 주의해야 합니다.
----------------------------------------------------------------------------------------
import os
def fileaccess(fpath): # 권한을 알아보는 함수 정의
print fpath,':',
if os.access(fpath,os.R_OK): # 읽기 권한이 있으면 r출력
print 'r',
if os.access(fpath,os.W_OK): # 쓰기 권한이 있으면 w출력
print 'w',
if os.access(fpath,os.X_OK): # 실행 권한이 있으면 x출력
print 'x',
flist=os.listdir('.')
for fname in flist:
fileaccess(fname)
----------------------------------------------------------------------------------------
(실행 결과)
end.txt : r w x
file.py : r w x
inout - 바로 가기.lnk : r w x
inout.py : r w x
out2.py : r w x
pickle.py : r w x
pickle.pyc : r w x
pickle.txt : r w x
t.txt : r w x
----------------------------------------------------------------------------------------
위의 결과를 보면 전부 기본 권한인 777권한인데요 chmod 함수로 권한을 한번 바꿔보겠습니다. 위의 코드에서 chmod를 사용 한 뒤에 다시 출력을 했을때의 결과입니다.
----------------------------------------------------------------------------------------
os.chmod('t.txt',0555) # r=1, w=2, x=4
flist=os.listdir('.')
for fname in flist:
fileaccess(fname)
----------------------------------------------------------------------------------------
t.txt : r x # 권한이 바뀐 걸 확인할 수 있습니다.
- 파일 조작
- 파일 이름 다루기
----------------------------------------------------------------------------------------
1) 상대 경로를 절대 경로로 변환하기
os.path.abspath(상대경로)
# 실제 파일 존재와는 무관하게 절대경로로 변경됨
2) 주어진 경로의 파일이 존재하는지 확인
os.path.exists(filapath)
3) 현재/부모 디렉토리를 가리키는 이름 얻기
os.curdir # 현재 디렉토리
os.pardir # 부모 디렉토리
4) 디렉토리 분리 문자 얻기
os.sep # 이클립스에서는 슬래시(/)
----------------------------------------------------------------------------------------
- 경로명 분리하기
os.path 모듈의 basename() 함수와 dirname()함수를 이용합니다. 파일의 존재 유무와는 상관이 없습니다.
----------------------------------------------------------------------------------------
import os
f='D:/PythonProject/Python/14/test.py' # test.py는 존재하지 않음
print os.path.basename(f) # 파일명
print os.path.dirname(f) # 디렉토리 경로
----------------------------------------------------------------------------------------
(실행 결과)
test.py
D:/PythonProject/Python/14
----------------------------------------------------------------------------------------
2) 경로명과 파일명을 한번에 분리하기
os.path 모듈의 split() 함수를 이용하며, 튜플의 형태로 반환됩니다.
----------------------------------------------------------------------------------------
import os
f='D:/PythonProject/Python/14/test.py' # test.py는 존재하지 않음
----------------------------------------------------------------------------------------
(실행 결과)
('D:/PythonProject/Python/14', 'test.py')
os.path 모듈의 splitext() 함수를 이용하며, 튜플의 형태로 반환됩니다.
f='D:/PythonProject/Python/14/test.py' # test.py는 존재하지 않음
'언어 > Python' 카테고리의 다른 글
[파이썬] 함수 (0) | 2017.03.06 |
---|---|
[파이썬] 디렉토리 다루기 (0) | 2017.02.25 |
[파이썬] 파일 입·출력 (0) | 2017.02.22 |
[파이썬] 사전 (0) | 2017.02.19 |
[파이썬] 튜플과 집합자료형 (0) | 2017.02.14 |