os에는 listdir, scandir, walk가 있습니다. 이 중 os.walk는 무엇을 하는 함수일까요? 먼저 제가 탐색할 폴더를 '.'라고 해 보겠습니다. 이 폴더 아래에는 폴더 a, 파일 b, c가 있고, 폴더 a 밑에는 파일 a, b가 있습니다. 이 때, listdir과 scandir은 아래 회색친 부분만 탐색합니다. 1뎁스만 탐색하는 것을 볼 수 있어요. 이에 비해, walk는 . 아래에 있는 모든 파일과 폴더들을 탐색합니다. 단, 아무런 설정을 하지 않으면, 바로가기와 같은 것들은 제외하고 탐색하긴 합니다. 제가 탐색할 폴더 . 밑에 그러한 것이 없다고 가정하면, 회색 부분이 walk가 탐색하는 범위가 됩니다. 그러니, 언제 써야 할 지는 쉽게 알 수 있습니다. 어떤 폴더를 기준으로 재귀적..
전체 글 검색 결과
이전 글에서 파이썬의 os.listdir을 소개한 적이 있을 겁니다. 다시 복습해 봅시다. 먼저 이 코드는, main.py가 있는 폴더에 있는 파일과 폴더들을 모두 가져옵니다. 단 자신과 상위 폴더는 제외합니다. 해당 폴더에 들어가서 ls -a를 쳐 봅시다. 그러면 이 폴더에 속한 디렉토리와 파일들이 나옵니다. .과 ..을 제외한 갯수를 세면 7개입니다. 프로그램의 실행 결과를 볼까요? 7개로 동일하게 나옵니다. 여기서 문제. 이 리스트에 있는 친구들이 파일인지 폴더인지 알아낼 수 있는 방법이 있을까요? 그렇지 않습니다. 단지, 리스트에 있는 아이템만 보고 알 길이 없습니다. 그렇기 때문에, 따로 아래와 같은 처리를 해 주어야 합니다. os.path.isdir로 따로 처리를 했음을 알 수 있습니다. 이는..
이번 시간에는 파이썬의 collections 안에 있는 defaultdict에 대해 간단하게 알아보겠습니다. 언제 쓰면 좋은지 알아볼게요. 딕셔너리나 set을 사용하다 보면 아래와 같은 에러를 자주 보신 적이 있을 겁니다. 키가 없을 때 KeyError 에러를 뱉습니다. 혹은 하나의 key가 여러 개의 value를 가지고 있다면 어떤가요? 이렇게 하시는 경우가 많을 겁니다. 먼저, 키 1이 있는지 검사합니다. 있으면 가져오고, 없으면 빈 리스트를 가져옵니다. 다음에, 가져온 리스트에 2를 추가합니다. 다음에 dic[1] = lt로 키 1의 값에 2를 append한 리스트를 대입합니다. 결과는 위와 같습니다. 얼핏 보면, dic[1].append(2)만 있으면 될 거 같습니다. key 값이 있을 때에는 별..
django에서, 파일을 form에 넣었을 때, 어떤 경우에는 파일 이름이 바뀌었습니다. 이는 get_valid_filename 때문입니다. 이게 무엇을 하는 것인지 간단하게 보겠습니다. 먼저, 양 끝에 붙은 공백을 제거한 다음에, 중간에 있는 공백들은 모두 _로 치환합니다. 다음에 re.sub인데요. 앞에 (?u)가 붙어있고, 뒤에 [^-\\w.]이 있습니다. 무엇을 의미할까요? 먼저, re.sub는 특정 패턴에 걸려들면, 다른 패턴으로 치환하는 역할을 합니다. 2번째 인자에 빈 문자열이 들어갔기 때문에, 1번째 패턴에 걸리면, 빈 문자열로 치환하겠구나. 정도는 알 수 있습니다. 예를 들어, s="abcde"라고 한다면, s=re.sub(r"a", "", s)의 결과는 "bcde"가 나옵니다. 패턴 "..
os.path의 splitext 함수는 확장자를 검사하기 위해 쓰이는 함수입니다. 문서에 있는 표현을 잠시 빌리면, root하고 ext를 나눠버리기 위해서 쓰는데요. 예를 들어, a.jpg는 a와 .jpg로 분리할 수 있습니다. 뒤에 .jpg가 확장자이기 때문입니다. 예제를 보면서 알아 봅시다. 먼저, 'a/b/c'는 root로만 이루어져 있고, 확장자 정보는 없습니다. 따라서, root는 'a/b/c', ext는 ''로 나오게 됩니다. 정말 그렇게 나오는지는 결과를 확인해 보면 됩니다. 네. 정말 그렇게 나오네요. 이제, 'a/b/c.png'는 어떻게 나올까요? 확장자가 .png임은 한눈에 알 수 있습니다. 결과는 위와 같이 나옵니다. 확장자 부분을 뺀 나머지가 root가 됨을 알 수 있습니다. 이제 ..
최근댓글