Python chờ đóng tệp

def wait_for_raw_file[self]:
        if os.path.exists[self.video_dir + 'raw.h264']:
            mp4box_process, recording_name = self.convert_raw_recording[]
                   
            self.root.after[0, self.wait_for_recording_to_save, mp4box_process, recording_name]
            self.update_capture_settings[]
        elif os.path.exists[self.video_dir + 'raw.mp4'] and self.of_recording_finished:
            recording_path , recording_name = self.generate_recording_path[]
            os.rename[self.video_dir + 'raw.mp4', recording_path ]
            self.is_recording = False
            self.data.create_new_slot_mapping_in_first_open[recording_name]
            self.update_capture_settings[]
        else:
            self.root.after[1000, self.wait_for_raw_file] 

Tôi đoán có thể bạn gặp phải lỗi khi đóng tệp, nhưng tôi không chắc điều gì sẽ xảy ra, bạn sẽ nhận được ngoại lệ nào hoặc bạn có thể làm gì với nó

Lệnh gọi “đóng” xảy ra trong phương thức __exit__, được gọi khi khối “với” đang hoàn thiện mọi thứ. Tôi không chắc liệu nó có bắt được ngoại lệ ở đó hay không hoặc điều gì sẽ xảy ra nếu một ngoại lệ xảy ra

Tỷ nói.

Tôi vừa mới đọc bài viết này. Cảm ơn, nó rất hữu ích. Tôi mới làm quen với Python. Tôi đã viết một vài chương trình cho đài phát thanh cộng đồng của chúng tôi để ghi dữ liệu vào một tệp, cứ sau 5 phút. Tôi đã sử dụng trình tự mở, viết và đóng thay vì 'với'. Các chương trình này đã chạy đáng tin cậy trong nhiều tháng, nhưng luôn có lý do để cải thiện. Gần đâyLy tôi nhận thấy rằng khi tôi mở tệp bằng trình soạn thảo văn bản, dòng gần đây nhất không xuất hiện. Tôi phát hiện ra rằng mã của tôi có “f. đóng”, không phải “f. đóng lại[]". Điều thú vị là, điều đó không gây ra lỗi trên máy tính Mac hoặc Windows 10. Tôi đã thực hiện một thử nghiệm nhỏ để xác nhận hành vi. Bạn có biết tại sao Idle sẽ ổn với “f. đóng” và nếu có bất cứ điều gì “f. đóng” nào. Cuối cùng, bạn đã khiến tôi được chuyển đổi, tôi đã chuyển sang “với”

Alexander nói.

f. đóng là trả về đối tượng phương thức; . Để chứng minh điều này, bạn có thể thử `method = f. close`, trong trường hợp đó gọi `method[]` sẽ giống như gọi `f. đóng[]`

Nó không gây ra lỗi vì đó là một câu lệnh hợp lệ [mặc dù nó không làm gì cả]. Những câu lệnh này thực sự rất phổ biến trong trình bao REPL [tôi. e. , nếu bạn chạy python trong terminal/console/IDLE's shell]. Ở đó bạn có thể gõ một cái gì đó như 2 + 2 và nhận được câu trả lời 4 in lại. Bạn không gặp lỗi, vì vậy đây là một câu lệnh hợp lệ và bạn có thể viết nó trên dòng riêng của nó trong tập lệnh Python và nó sẽ không gây ra lỗi. Vì bạn không lưu trữ nó trong một biến, nên kết quả [4] sẽ bị loại bỏ và câu lệnh sẽ không có hiệu lực. Điều tương tự cũng xảy ra với câu lệnh f. đóng lại. nó trả về một đối tượng phương thức [và nếu bạn nhập nó vào trình bao, nó sẽ xuất ra một cái gì đó giống như “]. Tuy nhiên, vì bạn không làm gì với đối tượng đó nên câu lệnh không có hiệu lực

Thomas nói.

Đến đây trong khi bản thân tôi đang cố gắng xác định cách tốt nhất để tiếp cận điều này với những sinh viên mới bắt đầu học trung cấp;

Cách tiếp cận của tôi sẽ chủ yếu dạy mà không sử dụng `with` nhưng sẽ đề cập ngắn gọn về nó như một cấu trúc mà họ có thể bắt gặp và đưa ra lý do ngắn gọn

Shanice A. Bryan nói.

Xin chào,

Tôi nhận ra rằng một trong những hạn chế của việc sử dụng “with” là bạn phải cẩn thận nếu bạn có các đối tượng con trỏ khác nhau cho cùng một tên tệp và chúng ở các chức năng khác nhau

Trong tình huống trên, bạn thực sự phải đóng tệp một cách rõ ràng, nếu không khi bạn ghi vào tệp, nó sẽ không như ý bạn muốn, ngay cả khi câu lệnh in của bạn đã được sửa theo trình tự

Tuy nhiên, điều này có thể là do tôi đang sử dụng nó ở chế độ “a+”

Chris Wilson nói.

Bản chất không xác định của kết quả ngược lại, là một đối số hoàn hảo cho việc sử dụng “với”

Nó cũng sẽ hạn chế việc triển khai một cách không cần thiết và thêm vào hành trang của ngôn ngữ, để chỉ định điều gì sẽ xảy ra khi bạn không đóng tệp một cách rõ ràng hoặc khi nào tệp cần được thu gom rác. Câu trả lời đơn giản là. “Đừng làm thế. Nếu bạn muốn kết quả được xác định, chỉ cần đóng tệp đã. ”

Ồ, và thời gian chờ hình ảnh xác thực của bạn quá ngắn, nó đã hết thời gian trong khi đọc bài viết của bạn và viết bài trả lời này, và tôi suýt mất câu trả lời. [May là trình duyệt của tôi đã lưu nó cục bộ, vì vậy khi tôi nhấp vào nút quay lại, nó vẫn ở đó. ] Bạn đã nghĩ đến việc sử dụng Disqus thay vì sử dụng hệ thống nhận xét của riêng mình chưa?

Reuven Lerner nói.

một điểm tốt

Đối với hệ thống bình luận, tôi chỉ sử dụng những gì được tích hợp sẵn trong WordPress, cùng với một plugin thực hiện Captchas. Tôi đã mất một thời gian dài để đưa những thứ đó vào, bởi vì tôi rất ghét chúng, nhưng sau khi nhận được vô số bình luận rác, tôi đã bó tay và quyết định làm điều đó. Sử dụng Disqus không phải là một ý tưởng tồi, nhưng hiện tại, số lượng bình luận ít đến mức tôi không coi đó là vấn đề lớn. [Bạn có thể tranh luận rằng đây là lý do tại sao tôi có rất ít bình luận, tất nhiên…]

Chủ Đề