반응형
os.walk ()
에 의해 주어진 파일과 디렉토리의 순서가 걱정됩니다. 이러한 디렉터리가있는 경우 1
, 10
, 11
, 12
, 2
, 20
, 21
, 22
, 3
, 30
, 31
, 32
, 출력 목록의 순서는 무엇입니까?
숫자 값으로 정렬되어 있습니까?
1 2 3 10 20 30 11 21 31 12 22 32
아니면 ls
가 제공하는 것과 같이 ASCII 값으로 정렬합니까?
1 10 11 12 2 20 21 22 3 30 31 32
또한 특정 정렬을 얻으려면 어떻게해야합니까?
해결 방법
os.walk
는 os.listdir
을 사용합니다. 다음은 os.listdir
의 독 스트링입니다.
listdir (경로)-> list_of_strings
디렉토리의 항목 이름이 포함 된 목록을 반환합니다.
path: path of directory to list
목록은 임의의 순서입니다 . 그것은 특별한 것을 포함하지 않습니다 항목 '.' 및 '..'이 디렉토리에있는 경우에도 마찬가지입니다.
(내 강조).
그러나 sort
를 사용하여 원하는 순서를 확인할 수 있습니다.
for root, dirs, files in os.walk(path):
for dirname in sorted(dirs):
print(dirname)
(디렉터리 이름은 정수가 아닌 문자열이므로 sorted (dirs)
는 문자열로 정렬합니다.
Alfe와 Ciro Santilli가 지적했듯이 디렉터리를 정렬 된 순서로 반복 하려면 디렉터리
를 제자리 로 수정합니다.
for root, dirs, files in os.walk(path):
dirs.sort()
for dirname in dirs:
print(os.path.join(root, dirname))
직접 테스트 할 수 있습니다.
import os
os.chdir('/tmp/tmp')
for dirname in '1 10 11 12 2 20 21 22 3 30 31 32'.split():
try:
os.makedirs(dirname)
except OSError: pass
for root, dirs, files in os.walk('.'):
for dirname in sorted(dirs):
print(dirname)
인쇄물
1
10
11
12
2
20
21
22
3
30
31
32
숫자 순서로 나열하려면 다음을 사용하십시오.
for dirname in sorted(dirs, key=int):
참조 페이지 https://stackoverflow.com/questions/18282370
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python : 디렉토리에서 확장자가 .MP3 인 최신 파일 찾기 (0) | 2021.01.09 |
---|---|
파이썬 ImportError : matplotlib에는 dateutil이 필요합니다. (0) | 2021.01.09 |
파이썬 큰 따옴표를 기본 따옴표 형식으로 사용하여 Python 사전을 만드는 방법은 무엇입니까? (0) | 2021.01.09 |
파이썬 인덱스 판다 데이터 프레임 비활성화 (0) | 2021.01.09 |
파이썬이 파일 내용을 인쇄하도록하는 방법 (0) | 2021.01.09 |
댓글