2012-10-10 14 views
9

संभव डुप्लिकेट:
python: which file is newer & by how much timeजांचें कि फ़ाइल नई है तो कुछ और फाइल है?

अजगर में - यदि फ़ाइल नए तो कुछ अन्य फ़ाइल है - मैं कैसे की जाँच करते हैं?

संपादित:

निर्माण समय और संशोधन समय कर रहे हैं।

प्रश्न वांछित संपत्ति को स्पष्ट रूप से अवश्य बता देना चाहिए।

संशोधन

  • os.stat(FILE).st_mtime

  • os.path.getmtime(FILE)

निर्माण

os.path.getctime(FILE) और os.stat(FILE).st_ctime यूनिक्स की तरह OSes पर निर्माण के समय नहीं देता है। Linkroot द्वारा यूनिक्स-जैसे बक्से पर निर्माण समय को खोजने का तरीका है। संशोधित समय के लिए

+2

आपने अभी तक क्या प्रयास किया है? इस तरह के फाइल ऑपरेशंस को आमतौर पर ['os' मॉड्यूल] (http://docs.python.org/library/os.html) के साथ हल किया जाता है। –

+0

@MartijnPieters: ओह मैं सोच रहा था कि कौन सा मॉड्यूल खोजना है। अब मैं os.stat के डॉक्टर को पढ़ रहा हूँ - आपको बताता है। – Adobe

+0

@MartijnPieters: यह उसमें से एक डुप्लिकेट नहीं है - क्योंकि लोग संशोधन समय के बारे में बात करते हैं, जबकि सवाल यह बताता है - निर्माण समय के बारे में है (स्पष्ट रूप से बोलने वाला संशोधन - मुझे इसकी आवश्यकता है - लेकिन मैं इसके बारे में सब भूल गया सवाल पोस्ट करते समय)। – Adobe

उत्तर

6

तुम भी os.path.getctime उपयोग कर सकते हैं हो सकता है। यह उदाहरण True वापस करेगा यदि file1file2 और False से पहले बनाया गया था।

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

संपादित करें: ध्यान दें कि there is no cross platform solution to your question - ctime() यूनिक्स में अंतिम परिवर्तन समय का मतलब है, समय नहीं बना। The same applies when using os.stat(file).st_ctime.

Here कुछ ऐसा लगता है जो यूनिक्स मशीनों पर काम कर सकता है।

+0

सौभाग्य से मुझे विंडोज़ से निपटने की ज़रूरत नहीं है। – Adobe

+0

@ एडोब - ओएसएक्स के बारे में किसी अन्य प्रश्न के लिंक को जोड़ने का उत्तर अपडेट किया गया, लेकिन ऐसा लगता है कि यह थोड़ा हैकिश है। – root

+0

@ एडोब - :) :) :) – root

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

if f1 > f2: 

जांच एक समाधान

+0

ऐसा लगता है कि आप संशोधन समय की तुलना कर रहे हैं, सृजन नहीं। – defuz

+3

क्योंकि फ़ाइल को नए –

+1

के रूप में अपडेट किया जा सकता है, यह जानना अच्छा होता है कि यदि फ़ाइल मौजूद नहीं है तो यह ओएसईआरर फेंकता है। कोशिश/ब्लॉक को छोड़कर लपेटना अच्छा होगा। –

0
import os 

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

किसी भी फाइल पर os.stat का उपयोग करना, आप अपनी फ़ाइल के बारे में 10 विभिन्न आँकड़े .. का एक सेट देता स्टेट में से एक creation time है ->st_ctime .. आप का उपयोग करने वाले दो फ़ाइलों के अपने निर्माण के समय के बीच अंतर की गणना कर सकते हैं।

>>> 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 
संबंधित मुद्दे