자세한 설명 : http://docs.python.org/2/library/glob.html
디스크에 있는 파일의 목록을 얻고 싶을 때.
디렉토리의 파일 목록을 얻으려면 glob모듈의 glob 함수를 사용하면 된다.
결과로 파일 명의 리스트를 넘겨준다.
와일드 카드 문자 (?,*)도 지원한다.
?는 임의의 문자 1개와 매칭된다.
*는 임의 개수(0개포함)의 모든 문자와 매칭 된다.
[...]는 괄호 안의 임의의 1개 문자와 매칭된다.
사용법 : glob.glob(path)
glob() 함수는 경로에 대응되는 모든 파일 및 디렉터리의 리스트를 반환
테스트
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']]"
테스트
>>> import glob
>>> glob.glob('*.gif')
['card.gif']
>>> glob.glob('.c*')
['.card.gif']
테스트
if __name__ == '__main__':
path = "C:\Users\newtoynt\Desktop\TEST"
pathList = glob.glob("%s/*.hwp"%(path)) # 확장자 hwp 만 얻기
for path in pathList :
print path
결과값
C:\Users\newtoynt\Desktop\TEST\50���� ��.hwp
C:\Users\newtoynt\Desktop\TEST\����.hwp
C:\Users\newtoynt\Desktop\TEST\����2.hwp
사용법 : glob.iglob(path)
glob과 동일한 동작을 수행하지만, 리스트로 결과를 반환하는 것이 아니라 이터레이터를 반환.
한번에 모든 결과를 리스트에 담지 않으므로, 결과가 매우 많은 경우 유용하게 쓰일 수 있다.
테스트
if __name__ == '__main__':
pathList = glob.iglob("*")
print pathList
for path in pathList :
print path
결과값
<generator object iglob at 0x00000000027112D0>
name_test.py
searchFileAndDirectory.py
treeTest.py
파일의 추가 정보 알아내기
어떤 파일의 종류를 알아내려면 os.path 모듈의 함수들을 이용 할수 있다.
isfile(path) - path가 일반 파일이면1 리턴
isdir(path) - path가 디렉토리(폴더) 이면 1 리턴
islink(path) - path가 심볼릭 링크이면 1 리턴
ismount(path) - path가 마운트 포인트이면 1리턴(unix)
os.path.getsize(filePath) - 파일의 크기를 얻는다.
os.path.getatime((filePath) - 파일의 최근 접근 시간을 얻는다.리턴 되는 숫자는 , 기준시간 (1970년 1월 1일 자정) 부터 현재까지 경과한 초
문자열 시간으로 변환을 할려면
time.ctime(os.path.getmtime(finePath)) 이렇게 해주면 파일의 수정 시간을 얻는다.
응용 파이썬 코딩
지정한 위치로부터 모든 디렉토리경로와, 파일경로를 얻어오는 코드
import glob
import os
searchFileList = []
searchDirList = []
def searchFileSetting():
dir = "C:\Users\newtoynt\Desktop\TEST"
searchFile(dir, 0)
def searchFile(dir, depth,depthList=[]):
for obj in glob.glob(dir + '/*') :
if os.path.isdir(obj) :
print "search path : %s" %obj
searchDirList.append(obj) # 디렉토리 path가 List에 저장
searchFile(obj, depth + 1)
elif os.path.isfile(obj) :
print "search file : %s" %obj
searchFileList.append(obj) # 파일 path가 List에 저장
depthList.append(obj)
if __name__ == '__main__':
print "python test"
searchFileSetting()
결과값은
디렉토리 경로와, 파일경로 들을 뿌려준다.
트리구하기
import glob
import os
ndir = nfile = 0
def pythonTreeTest(dir, depth) :
global ndir, nfile
for obj in glob.glob(dir + '/*'):
if depth == 0:
prefix = '|--'
else :
prefix = '|' + ' ' * depth + '|--'
if os.path.isdir(obj): # 디렉토리인 경우
ndir += 1
print (prefix + os.path.basename(obj))
pythonTreeTest(obj, depth + 1)
elif os.path.isfile(obj) : # 파일인 경우
nfile += 1
print(prefix + os.path.basename(obj))
else : # 그외 경우 처리
print(prefix + 'unkwon object : ' , obj )
if __name__ == '__main__':
pythonTreeTest(".",0) # 처음에 현재 디렉토리로 지정
print('\n', ndir, 'directories', nfile, 'files') # 전체 합계 출력
결과값
|--name_test.py
|--searchFileAndDirectory.py
|--testDir
| |--treeDirTest.py
|--treeTest.py
|--treeTest_002.py
('\n', 1, 'directories', 5, 'files')
'프로그램 > Python' 카테고리의 다른 글
python timeout (only linux) (0) | 2018.12.18 |
---|---|
error : UnicodeEncodeError: 'cp949' codec can't encode character '\u2764' in position 19: illegal multibyte sequence (0) | 2018.11.26 |
python - OptionParser (3) | 2013.05.21 |
python split() (0) | 2013.05.21 |
Python 문자열 및 파일시스템 (7) | 2012.03.21 |