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 제공
댓글