본문 바로가기
SW 개발/Python

Python 폴더 및 파일 처리 함수 모음

by Kibua20 2020. 7. 17.

Python 폴더 및 파일 처리 명령어 모음입니다. 

 

Python에서 폴더 및 파일을 처리하기 위해서는 import os  해야 합니다.  한 가지 주의할 점은 리눅스와 윈도우의 파일 경로 처리 방식이 다르기 때문에 파일 경로를 python 코드에서  하드 코딩하면 윈도우와 리눅스에서 호환성을 보장이 안되고, 반드시  os.path.join() 로 처리해야 합니다. 

 

import os

 

현재 작업 폴더 얻어오기: os.getcwd()

os.getcwd()

 /home/kibua/git/devDocs/file

 

현재 작업 폴더 변경하기: os.chdir()

os.chdir('/home/kibua/git/devDocs')

/home/kibua/git/devDocs

 

특정 폴더의 폴더와 파일 리스트 확인하기: os.listdir()

os.listdir( '/home/kibua/git/devDocs')

→  폴더와 파일을 list 로 리턴함

['LICENSE', 'README.md', 'sample2.xml', 'doubleroot.xml', 'hello.py', 'zipper', 'hello2.py', 'gmail', 'testcase.sh', 'original.xml', 'CommentedXml.py', 'file', 'commented_parser.xml', 'sample.xml', 'commented_parser2.xml', 'test_stdio.py', '05.CalendarAPI (Server to Server App, JWT)', '.git']

 

특정 폴더의 폴더와 파일 존재  여부 확인하기: os.path.exist()

os.path.exists('/home/kibua/git/devDocs/file')

→ True  (폴더 존재)

print (os.path.exists('/home/kibua/git/devDocs/file/filetest.py'))

→ True (파일 존재)

 

폴더인지 확인하기: os.path.isdir()

os.path.isdir('/home/kibua/git/devDocs/file')

→ True  (폴더 존재)

os.path.isdir('/home/kibua/git/devDocs/file/filetest.py')

→ False  (파일임)

 

파일인지 확인하기: os.path.isfile()

os.path.isfile('/home/kibua/git/devDocs/file')

→ False  (폴더임)

os.path.isfile('/home/kibua/git/devDocs/file/filetest.py')

True  (파일 존재)

 

절대 경로 확인하기: os.path.abspath()

os.path.abspath(os.getcwd())

/home/kibua/git/devDocs/file

 

상대 경로 확인하기: os.path.relpath()

os.path.relpath('/home/kibua/git/devDocs/file', '/home/kibua/git')

→ devDocs/file

 

공통 경로 확인하기: os.path.commonprefix()

os.path.commonprefix( ['/home/kibua/git/devDocs/file', '/home/kibua/git'])

→ /home/kibua/git

 

폴더 이름을 제외한 파일 이름 얻어오기:os.path.basename()

base=os.path.basename('/root/dir/sub/file.ext')

→ file.ext

 

폴더 이름만 얻어오기 

base=os.path.dirname('/root/dir/sub/file.ext')

 

/root/dir/sub

확장자 제거 

base=os.path.basename('/root/dir/sub/file.ext')
os.path.splitext(base)[0]

→ file

 

파일 사이즈 얻어오기

size_in_bytes = os.path.getsize('/root/dir/sub/file.ext')

→  100 bytes

 

 



#!/usr/bin/env python3
# -*- coding:utf-8 -*-

import os
import shutil


print ('os.getcwd()', os.getcwd())

os.chdir('/home/kibua/git/devDocs')
print ('os.getcwd()', os.getcwd())

os.chdir('/home/kibua/git/devDocs/file')
print ('os.getcwd()', os.getcwd())
print (os.path.join('home', 'kibua', 'git'))
print (os.listdir( os.getcwd()))
print (os.path.exists('/home/kibua/git/devDocs/file'))
print (os.path.isdir('/home/kibua/git/devDocs/file'))
print (os.path.isfile('/home/kibua/git/devDocs/file'))
print (os.path.abspath(os.getcwd()))
print (os.path.relpath('/home/kibua/git/devDocs/file', '/home/kibua/git'))
print (os.path.commonprefix( ['/home/kibua/git/devDocs/file', '/home/kibua/git']))

base=os.path.basename('/root/dir/sub/file.ext')
print(base)
print (os.path.splitext(base))
print (os.path.splitext(base)[0])
print (os.path.splitext(base)[1])

 

관련 글

[모바일 SW 개발/Python] - Python: 폴더 백업 기능 구현 (7zip 압축, Sample code)

[모바일 SW 개발/Python] - Python 에러: /usr/bin/env: `python3\r': 그런 파일이나 디렉터리가 없습니다

[모바일 SW 개발/Python] - Python 표준 입출력(stdin/stdout) 활용 - 리눅스 프로그램과 연동

[모바일 SW 개발/Python] - Python JSON 사용 시 TypeError: Object of type bytes is not JSON serializable

[모바일 SW 개발/Python] - Python SyntaxError: Non-ASCII character in file on, but no encoding declared

[모바일 SW 개발/Python] - Python 2.7과 3.8호환성: a bytes-like object is required, not 'str'에러 수정

[모바일 SW 개발/Python] - [Tips] Python: XML Parsing 시 multiple elements on top level

[모바일 SW 개발/Python] - [Tips] Python 에서 XML comment 처리 - Sample code 제공

[모바일 SW 개발/Python] - [Tips] XML 에서 예약/특수 문자 처리




댓글