के तहत shutil.copystat (file1, file2) को कॉल करने के बाद फ़ाइल संशोधन समय बराबर नहीं है, मैं पाइथन 2.7.5 के साथ निम्न कोड चलाता हूं। Windows के तहत:विंडोज़
import os, shutil, stat, time
with open('test.txt', 'w') as f: pass # create an arbitrary file
shutil.copy('test.txt', 'test2.txt') # copy it
shutil.copystat('test.txt', 'test2.txt') # copy its stats, too
t1 = os.lstat('test.txt').st_mtime # get the time of last modification for both files
t2 = os.lstat('test2.txt').st_mtime
print t1 # prints something like: 1371123658.54
print t2 # prints the same string, as expected: 1371123658.54
print t1 == t2 # prints False! Why?!
मैं दोनों टाइम स्टांप (= तैरता) बराबर होने की उम्मीद है (जैसा कि उनके स्ट्रिंग अभ्यावेदन सुझाव है), तो क्यों t1 == t2
False
को मूल्यांकन करता है?
इसके अलावा, मैं दो अलग फाइलों से timestamps os.lstat
के ज़रिये पुनः प्राप्त की तुलना के बिना कम कोड, अर्थात् इस व्यवहार पुन: पेश करने में असमर्थ था। मैं महसूस कर रही है, मैं कुछ यहाँ तुच्छ याद आ रही है ...
संपादित करें: आगे के परीक्षण मैंने देखा के बाद, कि यह एक समय में एक बार प्रिंट
True
करता है, लेकिन नहीं अधिक बार एक बार से हर 10 रन।
संपादित करें 2: larsmans द्वारा सुझाव दिया गया है:
print ("%.7f" % t1) # prints e.g. 1371126279.1365688
print ("%.7f" % t2) # prints e.g. 1371126279.1365681
यह दो नए सवाल उठे:
- क्यों timestamps
shutil.copystat
बुला के बाद बराबर नहीं कर रहे हैं? print
राउंड डिफ़ॉल्ट रूप से तैरते हैं ?!
डेबियन लिनक्स पर पुन: पेश नहीं किया जा सकता है। "छोटा प्रिंट" अलग है या नहीं, यह देखने के लिए 'प्रिंट ("%। 7f"% t1) 'और' (t1 - t2) <1e-4' आज़माएं। –
यह देखने के लिए कि प्रिंट राउंड डिफ़ॉल्ट रूप से क्यों तैरते हैं, इसे आज़माएं: 'x = 10.1 (newline) प्रिंट ("% .20f "% x)'। यह आपके विचार से कुछ और प्रिंट करेगा। यह सामान्य है क्योंकि फ़्लोटिंग पॉइंट मान सभी आंशिक मानों का बिल्कुल प्रतिनिधित्व नहीं कर सकते हैं। हालांकि मुझे शटल समस्या के बारे में कोई जानकारी नहीं है। –
मुझे बाइनरी प्रतिनिधित्व के बारे में पता है, लेकिन यहां मामला अलग है: हमारे पास '10.0 99 999' मान के साथ एक फ्लोट है और यह' 10.1' प्रिंट करता है हालांकि हमने '% .2f' जैसे प्रारूप निर्दिष्ट नहीं किए हैं - इसलिए ऐसा लगता है कि ऐसा लगता है प्रभाव में अंतर्निहित दौर, जिसे मैं नहीं जानता था और मैंने पहले कभी नहीं देखा ... –