2010-06-29 37 views
6

Tôi có một mã số ví dụ:Python: Kiểm tra khi shutil.copyfile được thực hiện

for file in file_list: 
    shutil.copyfile(file,newpath) 
#do further actions 

Và đây là câu hỏi, tại #do further actions tôi sử dụng Iles f sao chép như vậy, tôi cần phải chắc chắn rằng các shutil.copyfile chức năng kết thúc của họ bài tập. Làm thế nào tôi có thể chắc chắn về điều này?

Trả lời

5

Các chức năng ngắt sẽ chỉ trả về sau khi thao tác hoàn tất. Nếu không có gì buồn cười đang diễn ra ở cấp độ hệ điều hành thì nó sẽ an toàn theo cách này.

Nếu bạn biết kích thước tệp bạn có thể kiểm tra xem điều đó có đúng không.

+2

Hệ điều hành hiện đại làm bộ nhớ đệm nặng ở cấp hệ thống tệp (trong bản phân phối Linux hiện đại, có thể mất tối đa một phút cho đến khi dữ liệu thực sự được ghi) và bộ điều khiển đĩa làm thêm bộ nhớ đệm. Tất nhiên, sau này không thể được kiểm soát bởi các ứng dụng. – Philipp

+0

Nhưng dữ liệu chính xác (được lưu trong bộ nhớ cache) phải được trả về nếu ứng dụng yêu cầu tệp. Tôi đã suy nghĩ nhiều hơn về NFS với tùy chọn async hoặc một cái gì đó tương tự. –

+0

Trong trường hợp của tôi, tôi đã chạy các tiến trình con phụ thuộc mà không có '.wait()' ing để kết thúc. – ThorSummoner

3

copyfile là chức năng chặn. Vào thời điểm bạn nhận được để #do further actions nó phải luôn luôn được thực hiện. Bạn có gặp vấn đề ở đâu không?

Các vấn đề liên quan