2012-10-10 27 views
9

thể trùng lặp:
python: which file is newer & by how much timeKiểm tra xem tệp có mới hơn sau đó một số tệp khác không?

Trong python - làm thế nào để tôi kiểm tra - nếu tập tin mới sau đó một số tập tin khác?

Sửa:

Có thời gian sáng tạo và thời gian chỉnh sửa.

Câu hỏi phải nêu rõ thuộc tính mong muốn.

Modification

  • os.stat(FILE).st_mtime

  • os.path.getmtime(FILE)

Creation

os.path.getctime(FILE)os.stat(FILE).st_ctime không đưa ra thời gian tạo trên hệ điều hành Unix-like. Link bởi root có giải pháp về cách tìm ra thời gian tạo trên các hộp giống Unix.

+2

Bạn đã thử gì cho đến nay? Các thao tác tệp như thế này thường được giải quyết dễ dàng bằng mô-đun ['os'] (http://docs.python.org/library/os.html). –

+0

@MartijnPieters: Ồ, tôi đã suy nghĩ xem module nào cần tìm kiếm. Bây giờ tôi đang đọc doc của os.stat - thatnks cho bạn. – Adobe

+0

@MartijnPieters: nó không phải là một bản sao của điều đó - vì có người nói về thời gian sửa đổi, trong khi câu hỏi như đã nói - là về thời gian tạo (nói thẳng thắn nói - là những gì tôi cần - nhưng tôi quên tất cả về nó trong khi đăng câu hỏi). – Adobe

Trả lời

6

Bạn cũng có thể sử dụng os.path.getctime. Ví dụ này sẽ trả về True nếu file1 được tạo trước file2False nếu không.

import os.path 
os.path.getctime('file1') < os.path.getctime('file2') 

EDIT: Lưu ý rằng there is no cross platform solution to your question - ctime() trong Unix nghĩa là lần thay đổi cuối cùng, không tạo thời gian. The same applies when using os.stat(file).st_ctime.

Here dường như là thứ có thể hoạt động trên các máy unix.

+0

May mắn thay tôi không phải đối phó với Windows. – Adobe

+0

@ Adobe - đã cập nhật câu trả lời thêm liên kết tới một câu hỏi khác về OSX, nhưng có vẻ như hơi bị hack. – root

+0

@ Adobe - :) :) :) – root

8
import os 
f1 = os.path.getmtime('file1') 
f2 = os.path.getmtime('file2') 

if f1 > f2: 

kiểm tra trong thời gian sửa đổi có thể là một giải pháp

+0

Có vẻ như bạn đang so sánh thời gian sửa đổi, không phải là tạo. – defuz

+3

Vì tệp có thể được cập nhật thành mới hơn –

+1

Bạn nên lưu ý rằng nếu tệp không tồn tại thì điều này sẽ gây ra lỗi OSError. Sẽ là tốt để bọc trong thử/ngoại trừ khối. –

0
import os 

def comp(path1, path2):  
    return os.stat(path1).st_ctime > os.stat(path2).st_ctime 
3

Sử dụng os.stat trên bất kỳ tập tin, mang đến cho bạn một bộ 10 số liệu thống kê khác nhau về tập tin của bạn .. Một trong những stat là creation time ->st_ctime .. Bạn có thể sử dụng để tính toán sự khác biệt giữa thời gian sáng tạo của bạn của hai tập tin. .

>>> import os 
>>> os.stat("D:\demo.pl") 
nt.stat_result(st_mode=33206, st_ino=0L, st_dev=0, st_nlink=0, st_uid=0, 
st_gid=0, st_size=135L, st_atime=1348227875L, st_mtime=1348228036L, 
st_ctime=1348227875L) 

>>> os.stat("D:\demo.pl").st_ctime 
1348227875.8448658 
Các vấn đề liên quan