Tôi đang cố gắng mở một tệp mở rộng .log trong Python nhưng tôi tiếp tục gặp phải một ioerror. Tôi tự hỏi nếu điều này có liên quan đến phần mở rộng bởi vì rõ ràng, cách duy nhất để vào vòng lặp đó là nếu 'một số.log' tồn tại trong thư mục.
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open['some.log', "r"]
print [f.read[]]
Traceback:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
Đã hỏi ngày 20 tháng 11 năm 2015 lúc 17:03Nov 20, 2015 at 17:03
robinhood91robinhood91robinhood91
1.5713 huy hiệu vàng19 Huy hiệu bạc35 Huy hiệu đồng3 gold badges19 silver badges35 bronze badges
2
Khi cố gắng mở một tệp trong một thư mục khác, bạn cần cung cấp đường dẫn tệp tuyệt đối. Nếu không, nó cố gắng mở một tệp trong thư mục hiện tại.
Bạn có thể sử dụng
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
9 để kết hợp import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
0 và import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
1import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
Đã trả lời ngày 20 tháng 11 năm 2015 lúc 17:06Nov 20, 2015 at 17:06
WondercricketwondercricketWondercricket
7.4432 Huy hiệu vàng38 Huy hiệu bạc55 Huy hiệu Đồng2 gold badges38 silver badges55 bronze badges
Có một mô-đun tích hợp có tên
2 để tạo tệp nhật ký trong Python.import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
Để đăng nhập một thông báo vào một tệp văn bản riêng biệt bằng cách định cấu hình bộ ghi nhật ký root mô -đun ____22 và đăng nhập thông báo gỡ lỗi:
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
Do đó, bạn thấy một tệp có tên
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
4 trong cùng một thư mục với chương trình của bạn. Tệp này sẽ có một thông báo trông như thế này:DEBUG:root:Debug logging test...
Trong Python, bạn có thể đăng nhập thông tin về các vấn đề trong một tệp riêng biệt. Tệp này sau này có thể giúp bạn chẩn đoán các vấn đề. Nó để lại một dấu vết của vụn bánh mì dẫn đến nguồn gốc của vấn đề.
Trong hướng dẫn toàn diện này, bạn tìm hiểu cách làm việc với mô -đun
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
2 và cách thiết lập logger.Đăng nhập Python - một tour du lịch chi tiết
Hãy cùng thực hiện một chuyến tham quan chi tiết hơn về đăng nhập và đăng nhập các tệp trong Python.
Ghi nhật ký có nghĩa là theo dõi các sự kiện và trạng thái ứng dụng của bạn khi nó chạy. Đó là một phương pháp quan trọng để phát triển, gỡ lỗi và chạy phần mềm.
Nếu bạn không theo dõi bất kỳ nhật ký nào của chương trình, rất có thể bạn không thể chẩn đoán các vấn đề đúng cách. Điều này là do không đăng nhập, không có dấu vết nào dẫn đến nguyên nhân gốc có thể của một vấn đề.
Với việc đăng nhập thích hợp được thiết lập, bạn có thể theo dấu vết của bánh mì đến nguồn gốc của một vấn đề.
Tại sao không in
Mặc dù in là một chiến lược tuyệt vời để gỡ lỗi mã, nhưng nó có thể không phải lúc nào cũng là lựa chọn tốt nhất. Điều này đặc biệt đúng khi chương trình phức tạp hơn.
Vấn đề với in là các bản in không được lưu trữ ở bất cứ đâu. Nếu ứng dụng của bạn có lỗi, không có dấu vết của lỗi đó, trừ khi thông báo lỗi được ghi lại ở đâu đó.
Vì vậy, bạn có thể muốn đăng nhập dữ liệu của chương trình trong một tệp nhật ký riêng.
Trong Python, có một thư viện tích hợp có tên
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
2 cho mục đích này.Cách bắt đầu ghi nhật ký tin nhắn trong Python
Để bắt đầu đăng nhập tin nhắn vào một tệp, bạn cần biết cách thiết lập logger.
Để làm điều này, bạn cần
- Nhập mô -đun
2import os location = '/Users/username/Downloads' for filename in os.listdir[location]: if filename == 'some.log': f = open[os.path.join[location, 'some.log'], "r"] print [f.read[]]
- Định cấu hình logger bằng phương thức
8. Phần còn lại của các bước mô tả làm thế nào.import os location = '/Users/username/Downloads' for filename in os.listdir[location]: if filename == 'some.log': f = open[os.path.join[location, 'some.log'], "r"] print [f.read[]]
- Chỉ định tệp mà tin nhắn nhật ký được gửi.
- Xác định mức độ nghiêm trọng của người Viking của các tin nhắn nhật ký.
- Định dạng các thông báo nhật ký.
- Nối hoặc ghi đè các tin nhắn nhật ký trước đó trong tệp.
Hãy để bắt đầu xây dựng một logger trong khi trải qua sáu bước này một cách chi tiết.
1. Nhập mô-đun đăng nhập tích hợp Python,
Để sử dụng chức năng ghi nhật ký tích hợp Python, hãy bắt đầu bằng cách nhập mô-đun ghi nhật ký.
import logging
2. Gọi BasicConfig [] để bắt đầu định cấu hình logger.
Để bắt đầu đăng nhập tin nhắn vào một tệp trong Python, bạn cần định cấu hình mô -đun
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
2.Để định cấu hình mô -đun ghi nhật ký, hãy gọi
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]0:
import logging logging.basicConfig[]
Một cuộc gọi
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
8 trống không có gì hữu ích. Trong các bước sau, bạn sẽ thêm các tham số vào cuộc gọi này để thực sự định cấu hình logger.3. Đăng nhập tệp đích trong Python
Phương thức
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
8 chấp nhận một tham số gọi là import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
1. Đây là một chuỗi chỉ định tệp đích cho thông báo nhật ký.Ví dụ: hãy để bắt đầu đăng nhập các tin nhắn vào một tệp được gọi là
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
4.import logging logging.basicConfig[filename="log.txt"]
Bây giờ logger biết tệp đích và có thể bắt đầu ghi nhật ký tin nhắn vào đó.
Nhưng trước khi chúng tôi đăng nhập tin nhắn đầu tiên của mình, chúng tôi cần chỉ định mức độ nghiêm trọng của các tin nhắn mà chúng tôi muốn theo dõi.
Hãy cùng xem các cấp độ tin nhắn nhật ký trong Python.
4. Các cấp tin nhắn đăng nhập
Có năm cấp độ chính của tin nhắn gỡ lỗi khi đăng nhập. Những cấp độ này mô tả sự nghiêm trọng của người Viking về vấn đề này.
Các cấp độ tin nhắn là:
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
5. Được sử dụng để cung cấp thông tin chi tiết. Mức này chủ yếu được sử dụng để chẩn đoán các vấn đề trong mã.Used to give detailed information. This level is mostly used for diagnosing issues in code.import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
6. Xác nhận chương trình hoạt động như mong đợi. Confirms the program works as expected.import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
7. Một dấu hiệu cho thấy một sự kiện bất ngờ xảy ra hoặc có thể xảy ra. An indication that an unexpected event occured or may occur.import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
8. Vấn đề nghiêm trọng. Chỉ ra rằng một chương trình không thể thực hiện một số hành động do lỗi. Serious issue. Indicates that a program was unable to perform some action due to an error.import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
9. Một lỗi nghiêm trọng. Chỉ ra rằng chương trình có thể không thể tiếp tục chạy.. A serious error. Indicates that the program may be unable to continue running.
Các cấp độ khai thác là số nguyên đằng sau hậu trường. Đây là một cái bàn
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]9 | 50 |
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]8 | 40 |
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]7 | 30 |
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]6 | 20 |
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]5 | 10 |
Khi bạn chỉ định mức ghi nhật ký, chương trình đã ghi các tin nhắn từ mức đó trở lên.
Ví dụ: nếu bạn sử dụng
DEBUG:root:Debug logging test...5, chỉ các tin nhắn của cấp độ
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]7,
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]8,
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]9 mới được ghi lại.
Để đăng nhập một thông báo ở một cấp độ cụ thể, hãy sử dụng các phương thức ghi nhật ký tích hợp tương ứng với các mức được chỉ định ở trên.
Dưới đây là các phương pháp ghi nhật ký:
DEBUG:root:Debug logging test...
9. Đăng nhập một tin nhắn ở cấp độimport logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
5.import logging
1. Đăng nhập một tin nhắn ở cấp độimport logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
6.import logging
3. Đăng nhập một tin nhắn ở cấp độimport logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
7.import logging
5. Đăng nhập một tin nhắn ở cấp độimport logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
8.import logging
7. Đăng nhập một tin nhắn ở cấp độimport logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
9.
Hãy để quay trở lại để định cấu hình logger của chúng tôi. Hãy để chỉ định mức tin nhắn là gỡ lỗi để ghi lại tất cả các tin nhắn có thể vào tệp:
________số 8Bây giờ bạn có thể đăng nhập tin nhắn đầu tiên của mình vào tệp
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
4. Để thực hiện việc này, hãy thêm dòng sau sau cuộc gọi import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
8:logging.debug["Debug logging test..."]
Sau đó, chạy chương trình và thấy rằng một tệp mới có tên
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
4 xuất hiện trong thư mục dự án của bạn. Mở tệp và bạn sẽ thấy thông báo này trong tệp:DEBUG:root:Debug logging test...
Và bạn có nó rồi đấy! Bây giờ mức độ tin nhắn nhật ký của bạn đã được đặt gỡ lỗi, bạn có thể sử dụng tất cả các phương thức ghi nhật ký khác để đăng nhập nhiều lỗi nghiêm trọng hơn. Đây là cách toàn bộ chương trình có thể trông như bây giờ:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
1Chạy đoạn mã này ghi lại tất cả các cấp tin nhắn khác nhau vào tệp log.txt, trông như thế này:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
25. Cách định dạng thông báo nhật ký
Bây giờ tất cả các tin nhắn được định dạng theo cách này:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
3Here:
- Yếu tố đầu tiên là cấp độ tin nhắn. Ví dụ
import logging logging.basicConfig[filename="log.txt", level=logging.DEBUG] logging.debug["Debug logging test..."]
5. - Phần tử thứ hai là đối tượng logger. Trong hướng dẫn này, chúng tôi sử dụng logger gốc, vì vậy nó hiển thị
import logging logging.basicConfig[]
3. - Mục thứ ba là tin nhắn đã đăng nhập.
Nhưng định dạng có thể bao gồm một cái gì đó nhiều thông tin hơn, chẳng hạn như thời gian và thông điệp.
Để loại bỏ định dạng mặc định, bạn có thể tùy chỉnh định dạng bằng cách chỉ định khóa
import logging logging.basicConfig[]4 trong cuộc gọi
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
8.Ví dụ: hãy để định dạng các tin nhắn đã ghi lại sao cho chỉ thời gian và thông báo được hiển thị. Hãy để sửa đổi cuộc gọi
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
8:f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
4Bây giờ bạn có thể chạy toàn bộ chương trình một lần nữa:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
5Bây giờ đầu ra được định dạng với dấu thời gian giống như chúng tôi muốn:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
6[Số nguyên
import logging logging.basicConfig[]7 là số mili giây mà hoạt động này đã thực hiện.]
Lưu ý rằng đây không phải là thông tin duy nhất bạn có thể đưa vào tin nhắn đã đăng nhập. Dưới đây là danh sách đầy đủ tất cả các thông tin bạn có thể hiển thị về tin nhắn.
6. Nối hoặc ghi đè tệp nhật ký trong Python
Hãy thử chạy chương trình ghi nhật ký ví dụ nhiều lần. Nếu bạn mở tệp, bạn có thể thấy các lỗi được thêm vào tệp. Các bản ghi từ các lần chạy trước vẫn còn đó.
Điều này là do, theo mặc định, logger được cấu hình để nối các tin nhắn vào tệp nhật ký.
Bạn cũng có thể thay đổi điều này bằng cách chỉ định
import logging logging.basicConfig[]8 trong cuộc gọi
import os
location = '/Users/username/Downloads'
for filename in os.listdir[location]:
if filename == 'some.log':
f = open[os.path.join[location, 'some.log'], "r"]
print [f.read[]]
8.Nếu bạn muốn ghi đè lên các nhật ký thay vì nối thêm chúng, hãy chỉ định
import logging logging.basicConfig[]8 là W W W:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
7Nếu bây giờ bạn chạy chương trình, nhật ký mới ghi đè lên những cái trước.
Một lần cuối cùng ở đây là chương trình đầy đủ:
f = open['some.log', "r"]
IOError: [Errno 2] No such file or directory: 'some.log'
8Sự kết luận
Hôm nay bạn đã học cách tạo một tệp nhật ký trong Python và cách đăng nhập các tin nhắn ở các cấp độ khác nhau vào nó.
Một tệp nhật ký có thể hữu ích để theo dõi các lỗi và sự cố trong mã của bạn. Một tệp nhật ký được cấu hình đúng hướng dẫn đến nguồn lỗi khá dễ dàng.
Cảm ơn vì đã đọc. Tôi hy vọng bạn thấy nó hữu dụng.
Mã hóa hạnh phúc!
Đọc thêm
Câu hỏi và câu trả lời phỏng vấn Python
Các tính năng nâng cao hữu ích của Python