2014-06-10 2 views
11

'upload'디렉토리에 최신 파일을 사용하려고합니다. 확장자는 '.log'이며 Python에서 처리됩니다. 나는 Ubuntu 웹 서버를 사용하고 파일 업로드는 html 스크립트로 수행됩니다. 업로드 된 파일은 Python 스크립트에 의해 처리되고 결과는 MySQL 데이터베이스에 기록됩니다. 나는 내 코드에 대해 this 답을 사용했다.Python은 특정 확장자를 가진 디렉토리에서 가장 최근 파일 가져 오기

import glob 
newest = max(glob.iglob('upload/*.log'), key=os.path.getctime) 
print newest 
f = open(newest,'r') 

그러나이 파일은 디렉토리에서 최신 파일을 가져 오지 않으며 가장 오래된 파일을 가져옵니다. 왜? 당신의 목적을 위해

newest = max(glob.iglob('upload/*.log'), key=os.path.getctime) 

은 다음과 같아야합니다 :

+3

시도'min' 대신 max''의 - 논리가 * 역 * ? –

+0

파이썬 대화 형 콘솔에서 실행할 때 가장 최신 파일을 제공합니다. – Himanshu

+1

그것에 대해 생각해 보면,'os.path.getmtime'을 원할 수도 있습니다 - 생성 시간과 수정 시간은 다릅니다 ... 그래서 오류 ... 확실하지 않습니다 –

답변

18

문제는 max의 논리 역이 min 때문이다

newest = min(glob.iglob('upload/*.log'), key=os.path.getctime) 
+2

최신 파일을 식별 할 수있는 방법을 모르는 신규 사용자는주의해야합니다. 왜냐하면 최대 getctime은 최신 날짜이므로 최신 날짜 여야합니다. 나는 max64가 AMD64와 raspberry pi에 리눅스에 최신 파일을주는 것을 발견한다. 여기에서 무슨 일이 일어 났는지 궁금합니다. – Paul

+0

@Paul 참으로 ... 나는이 생각에 OPs 접근법이 옳았다는 것을 기억하고 '맥스'에 대한 '분'은 정말로 그들이 가장 오래된 것을 원한다고 보는 제안이었다. 정말 싶었어요.) ... –

+0

@JonClements 안녕하세요, 특정 파일 형식을 잡아 비슷한 일을하고 있습니다. 최신 파일이어야하고 디렉토리 내에 있어야합니다. 'glob '를 사용하지 않고'os' 모듈 만 사용하여이 작업을 수행 할 수있는 방법이 있는지 궁금하십니까? – yan

관련 문제