[python] Pythons glob.glob는 어떻게 주문됩니까?

다음 파이썬 코드를 작성했습니다.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os, glob

path = '/home/my/path'
for infile in glob.glob( os.path.join(path, '*.png') ):
    print infile

이제 나는 이것을 얻는다 :

/home/my/path/output0352.png
/home/my/path/output0005.png
/home/my/path/output0137.png
/home/my/path/output0202.png
/home/my/path/output0023.png
/home/my/path/output0048.png
/home/my/path/output0069.png
/home/my/path/output0246.png
/home/my/path/output0071.png
/home/my/path/output0402.png
/home/my/path/output0230.png
/home/my/path/output0182.png
/home/my/path/output0121.png
/home/my/path/output0104.png
/home/my/path/output0219.png
/home/my/path/output0226.png
/home/my/path/output0215.png
/home/my/path/output0266.png
/home/my/path/output0347.png
/home/my/path/output0295.png
/home/my/path/output0131.png
/home/my/path/output0208.png
/home/my/path/output0194.png

어떤 방법으로 주문됩니까?

내 ls -l 출력을 얻는 데 도움이 될 수 있습니다.

-rw-r--r-- 1 moose moose 627669 2011-07-17 17:26 output0005.png
-rw-r--r-- 1 moose moose 596417 2011-07-17 17:26 output0023.png
-rw-r--r-- 1 moose moose 543639 2011-07-17 17:26 output0048.png
-rw-r--r-- 1 moose moose 535384 2011-07-17 17:27 output0069.png
-rw-r--r-- 1 moose moose 543216 2011-07-17 17:27 output0071.png
-rw-r--r-- 1 moose moose 561776 2011-07-17 17:27 output0104.png
-rw-r--r-- 1 moose moose 501865 2011-07-17 17:27 output0121.png
-rw-r--r-- 1 moose moose 547144 2011-07-17 17:27 output0131.png
-rw-r--r-- 1 moose moose 530596 2011-07-17 17:27 output0137.png
-rw-r--r-- 1 moose moose 532567 2011-07-17 17:27 output0182.png
-rw-r--r-- 1 moose moose 553562 2011-07-17 17:27 output0194.png
-rw-r--r-- 1 moose moose 574065 2011-07-17 17:27 output0202.png
-rw-r--r-- 1 moose moose 552197 2011-07-17 17:27 output0208.png
-rw-r--r-- 1 moose moose 559809 2011-07-17 17:27 output0215.png
-rw-r--r-- 1 moose moose 549046 2011-07-17 17:27 output0219.png
-rw-r--r-- 1 moose moose 566661 2011-07-17 17:27 output0226.png
-rw-r--r-- 1 moose moose 561678 2011-07-17 17:27 output0246.png
-rw-r--r-- 1 moose moose 525550 2011-07-17 17:27 output0266.png
-rw-r--r-- 1 moose moose 565715 2011-07-17 17:27 output0295.png
-rw-r--r-- 1 moose moose 568381 2011-07-17 17:28 output0347.png
-rw-r--r-- 1 moose moose 532768 2011-07-17 17:28 output0352.png
-rw-r--r-- 1 moose moose 535818 2011-07-17 17:28 output0402.png

파일 이름 또는 크기별로 정렬되지 않습니다.

다른 링크 : glob,ls



답변

아마도 전혀 정렬되지 않았으며 파일 시스템에 항목이 나타나는 순서, 즉 사용할 때 얻는 순서를 사용 ls -U합니다. (적어도 내 컴퓨터에서는 리스팅 glob일치와 동일한 순서를 생성합니다 ).


답변

순서는 임의적이지만 직접 정렬 할 수 있습니다

이름별로 정렬하려면 :

sorted(glob.glob('*.png'))

수정 시간별로 정렬 :

import os
sorted(glob.glob('*.png'), key=os.path.getmtime)

크기별로 정렬 :

import os
sorted(glob.glob('*.png'), key=os.path.getsize)

기타


답변

소스 코드를 확인하면 다음 과 같이 glob.glob내부적으로 호출 os.listdir됩니다.

http://docs.python.org/library/os.html?highlight=os.listdir#os.listdir

키 문장 : os.listdir (path) 경로로 지정된 디렉토리에있는 항목의 이름이 포함 된 목록을 반환합니다. 목록은 임의의 순서입니다. 특수 항목 ‘.’은 포함되지 않습니다. 그리고 디렉토리에 존재하더라도 ‘..’.

임의 순서 . 🙂


답변

glob.glob ()는 os.listdir ()을 감싸는 래퍼이므로 기본 OS는 데이터 전달을 담당합니다. 일반적으로 여기에서 주문에 대한 가정을 할 수 없습니다. 기본 가정은 : 주문 없음 . 정렬이 필요한 경우 : 응용 프로그램 수준에서 정렬하십시오.


답변

순서는 임의적이지만 여러 가지 방법으로 정렬 할 수 있습니다. 그중 하나는 다음과 같습니다.

#First, get the files:
import glob
import re
files =glob.glob1(img_folder,'*'+output_image_format)
# if you want sort files according to the digits included in the filename, you can do as following:
files = sorted(files, key=lambda x:float(re.findall("(\d+)",x)[0]))


답변

비슷한 문제가 발생 glob하여 임의의 순서로 파일 이름 목록을 반환했지만 파일 이름으로 표시된 숫자 순서대로 파일을 단계별로 살펴보고 싶었습니다. 이것이 내가 달성 한 방법입니다.

내 파일은 glob다음과 같이 반환되었습니다 .

myList = ["c:\tmp\x\123.csv", "c:\tmp\x\44.csv", "c:\tmp\x\101.csv", "c:\tmp\x\102.csv", "c:\tmp\x\12.csv"]

나는 목록을 제자리에 정렬했다. 이것을하기 위해 나는 함수를 만들었다 :

def sortKeyFunc(s):
    return int(os.path.basename(s)[:-4])

이 함수는 파일 이름의 숫자 부분을 반환하고 정수로 변환 한 다음 목록에서 정렬 방법을 다음과 같이 호출했습니다.

myList.sort(key=sortKeyFunc)

이것은 다음과 같은 목록을 반환했습니다.

["c:\tmp\x\12.csv", "c:\tmp\x\44.csv", "c:\tmp\x\101.csv", "c:\tmp\x\102.csv", "c:\tmp\x\123.csv"]


답변

과거에 시스템에 수행 한하고 추가 할 수있는 glob.glob에 대해 궁금해하는 경우 sorted전화를, 순서는에 일치합니다 맥 HFS + 파일 시스템 및됩니다 탐색하기 위해 다른 유닉스 시스템. 따라서 파일이 추가, 제거, 이름 변경, 삭제, 이동 등의 경우 발생할 수있는 기본 파일 시스템이 재구성되지 않으면 결정적 일 수 있습니다.