http://sweeper.egloos.com/m/3043544
1. 경로의 모든 하위 디렉토리 검색
# os.walk를 이용한 방식이 젤 간단하고 빠르다.
for root, sub_dirs, files in os.walk(path):
# 모든 파일에 대해...
for fname in files:
# 특정 확장자인 경우 (os.path.splitext 함수 좋다)
ext = (os.path.splitext(fname)[-1]).lower()
if ext == ".vcxproj":
2. 특정 디렉토리의 파일 리스트
import glob
# C:/Python/ 디렉토리의 모든 파일 목록
list = glob.glob("C:/Python/*")
# C:/Python/ 디렉토리의 Q로 시작하는 파일 목록
list = glob.glob("C:/Python/Q*")
# C:/Python/ 디렉토리의 확장자 .py 파일 목록
list = glob.glob("C:/Python/*.py")
3. 리스트 랜덤 셔플
# sorted - element가 정수형일 때
import os
list = [1,2,3,4,5]
# sorted 함수는 셔플된 리스트를 반환, 원래 리스트는 변경하지 않는다
list = sorted(list, key=os.urandom)
# sorted - element가 user-defined 타입일 때
import random
class Test:
def __init__(self, id):
self.id = id
a = Test(1)
b = Test(2)
c = Test(3)
list = [a,b,c]
list = sorted(list, key=lambda *args: random.random())
# random.shuffle() - 모든 타입 가능, random.shuffle이 젤 나은 듯
import random
list = [1,2,3,4,5]
# random의 shuffle 함수는 반환값이 없고, 리스트 자체를 변경한다.
random.shuffle(list)
4. int / int = float?
파이썬의 경우 정수를 정수로 나누면 그 결과가 정수형이 되는데,
이를 실수형으로 반환하고 싶을 때 아래와 같이 __future__ 모듈의 division 기능을 임포트하면 된다.
# 정수형을 정수형으로 나눈 결과를 실수형으로
# __future__ 모듈의 division 함수 임포트
from __future__ import division
c = 5/2 # c = 2.5
5. swap
a = 1
b = 2
# swap
a,b = b,a
6. XML 인덴트 강제 조정
def apply_indent(elem, level = 0):
# tab = space * 2
indent = "\n" + level * " "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = indent + " "
if not elem.tail or not elem.tail.strip():
elem.tail = indent
for elem in elem:
apply_indent(elem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = indent
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = indent