2010-06-18 4 views
2

나는 검색하고 파일을 작성하고 작성한 시간 만에 내가 작성한 최신 파일 이름을 얻고 싶습니다. 자이 썬에서 어떻게 할 수 있는지 제안 해주십시오. 제안폴더에 최신 파일을 얻는 방법

import os 
    import glob 
    import time 
    folder='C:/xml' 
    for folder in glob.glob(folder): 
     for file in glob.glob(folder+'/*.xml'): 
      stats=os.stat(file) 
      print file ,time.ctime(stats[8]) 

다시 한번 감사의 모든 도움

위해 나는 코드를 다시 수정하고 난 정답, 내가 뭐하는 거지 실수 제안하십시오를 받고 있지 않다.

import os 
import glob 
import time 
folder='C:/xml' 
for x in glob.glob(folder+"/*.xml"): 
    (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)=os.stat(x) 
    time1=time.ctime(mtime) 
    for z in glob.glob(folder+"/*.xml"): 
     (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)=os.stat(z) 
     time2=time.ctime(mtime) 
     if (time1>time2): 
      new_file=x 
      new_time=time1 
     else: 
      new_file=z 
      new_time=time2 

print new_file,new_time 

답변

1

두 개의 변수를 사용하여 지금까지 발견 된 최신 파일의 이름과 시간을 추적합니다. 파일이 발견 될 때마다 파일을 업데이트 할 때마다 두 변수를 모두 업데이트하십시오. 루프가 완료되면 변수에 최신 파일의 이름과 시간이 포함됩니다.

예제 코드에 두 개의 중첩 루프가있는 이유는 확실하지 않습니다. 주어진 디렉토리에있는 모든 파일을 찾으려면 루프가 하나만 필요합니다. 당신이 max() 솔루션을 선택하는 경우

folder = "C:/xml" 
print max((os.stat(x)[8], x) for x in glob.glob(folder+"/*.xml")) 

, 당신의 디렉토리에 *.xml 파일이없는 경우를 고려해야합니다 :

파이썬 솔루션은 무언가 같이 일 수 있습니다.

+0

코드를 다시 작성했지만 올바른 대답을 얻지 못했습니다. 제안 사항이 없습니다. 도움 주셔서 감사합니다. – kdev

+0

@kdev : 다시 말하지만 왜 * 두 개의 중첩 루프가 있습니까? 하나는 충분해야합니다. 하나의 루프로 코드를 작성해보고 도움이되는지 확인하십시오. –

관련 문제