Tôi chạy đoạn mã sau bằng Python 2.7.5. hệ điều hành Windows:Thời gian sửa đổi tệp không bằng nhau sau khi gọi shutil.copystat (tệp1, tệp2) trong 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?!
Tôi hy vọng cả hai timestamps (= phao) là bằng nhau (như cơ quan đại diện chuỗi của họ đề nghị), vậy tại sao không t1 == t2
đánh giá để False
?
Ngoài ra, tôi không thể tạo lại hành vi này với mã ít hơn, tức là không so sánh dấu thời gian được truy xuất qua os.lstat
từ hai các tệp khác nhau. Tôi có cảm giác, tôi thiếu cái gì tầm thường ở đây ...
Edit: Sau khi thử nghiệm thêm nữa tôi nhận thấy, mà nó in
True
một lần trong một thời gian, nhưng không thường xuyên nhiều hơn một lần mỗi 10 chạy.
Sửa 2: Theo đề nghị của larsmans:
print ("%.7f" % t1) # prints e.g. 1371126279.1365688
print ("%.7f" % t2) # prints e.g. 1371126279.1365681
Điều này đặt ra hai câu hỏi mới:
- Tại sao các timestamps không bằng sau khi gọi
shutil.copystat
? print
vòng nổi theo mặc định ?!
Không thể sao chép trên Debian Linux. Hãy thử 'in ("%. 7f "% t1)' và '(t1 - t2) <1e-4' để xem" bản in nhỏ "có khác không. –
Để xem lý do tại sao vòng in nổi theo mặc định, hãy thử: 'x = 10.1 (dòng mới) in ("% .20f "% x)'. Điều này sẽ in một cái gì đó khác hơn bạn nghĩ. Điều này là bình thường vì các giá trị dấu phẩy động không thể đại diện cho tất cả các giá trị phân số chính xác. Tôi không có ý kiến về vấn đề shutil mặc dù. –
Tôi biết về biểu diễn nhị phân, nhưng ở đây trường hợp khác nhau: Chúng ta có float với giá trị '10.099999' và nó in '10.1' mặc dù chúng tôi không chỉ định định dạng như'% .2f' - vì vậy dường như là làm tròn tiềm ẩn có hiệu lực, mà tôi không biết và rằng tôi chưa bao giờ quan sát trước đây ... –