का उपयोग करके लिखा जा रहा है, मैं पाइथन का उपयोग करके वास्तविक समय में लॉग फ़ाइल पढ़ने का एक अच्छा तरीका ढूंढने का प्रयास कर रहा हूं। मैं एक लॉग फ़ाइल से लाइनों को एक बार लिखने के लिए प्रक्रिया करना चाहता हूं। किसी भी तरह से मुझे फ़ाइल को तब तक पढ़ने की कोशिश करना जारी रखना चाहिए जब तक कि इसे बनाया नहीं जाता है और फिर प्रक्रिया को समाप्त होने तक लाइनों को संसाधित करना जारी रखें। क्या ऐसा करने का कोई उचित तरीका है? धन्यवाद।एक लॉग फ़ाइल से पढ़ें क्योंकि इसे पाइथन
उत्तर
आप कुछ इस तरह के साथ की कोशिश कर सकते:
import time
while 1:
where = file.tell()
line = file.readline()
if not line:
time.sleep(1)
file.seek(where)
else:
print line, # already has newline
उदाहरण here से निकाला गया था।
ऐसा लगता है कि यह काम कर रहा है लेकिन यह मुझे मेरे django ऐप में एक ही समय में वस्तुओं को बनाने या डेटाबेस में लिखने की अनुमति नहीं देगा। मुझे इसके लिए एक स्पष्ट कारण नहीं दिख रहा है; क्या कोई साधारण फिक्स है? – Anon
मुझे नहीं पता। मुझे लगता है कि इस के जवाब पाने के लिए आपको एक अलग प्रश्न में कुछ कोड पोस्ट करना चाहिए। मुझे डेटाबेस अपडेट नहीं होने का कोई कारण नहीं दिखता है यदि आप उस कोड को इस के अंदर रखते हैं ... –
इसे काम करने के लिए मिला लेकिन मुझे अपने डेटाबेस में लिखने से पहले स्ट्रिंग के साथ बहुत गड़बड़ करनी पड़ी। धन्यवाद। – Anon
हो सकता है कि आप एक सिस्टम कॉल
tail -f
को os.system() का उपयोग कर
पेज 38 पर शुरू this PDF पर एक नजर डालें स्लाइड I-77 कर सकता है, ~ और आप सभी मिल जाएगा आपको जो जानकारी चाहिए बेशक स्लाइड के बाकी अद्भुत, बहुत हैं, लेकिन उन विशेष रूप से अपने मुद्दे से निपटने:
import time
def follow(thefile):
thefile.seek(0,2) # Go to the end of the file
while True:
line = thefile.readline()
if not line:
time.sleep(0.1) # Sleep briefly
continue
yield line
यह ध्यान देने योग्य है कि यह लॉग फ़ाइल में पहले से मौजूद किसी भी सामग्री को छोड़ देगा, केवल इस इटरेटर के निर्माण के बाद बनाई गई "नई" प्रविष्टियों को प्रिंट करेगा। इसके अलावा पीडीएफ वास्तव में एक सोने की खान है;) – blented
चूंकि यह पायथन और टैगिंग लॉगिंग है, ऐसा करने की एक और संभावना है।
मुझे लगता है कि यह एक पायथन लॉगर पर आधारित है, लॉगिंग। हैंडलर आधारित।
तुम सिर्फ एक वर्ग है कि (नाम) लकड़हारा उदाहरण हो जाता है बना सकते हैं और emit
समारोह के ऊपर लिख एक जीयूआई पर इसे डाल करने के लिए कर सकते हैं उदाहरण
(यदि आप कंसोल की जरूरत है सिर्फ फ़ाइल हैंडलर के लिए एक सांत्वना हैंडलर जोड़ने):
import logging
class log_viewer(logging.Handler):
""" Class to redistribute python logging data """
# have a class member to store the existing logger
logger_instance = logging.getLogger("SomeNameOfYourExistingLogger")
def __init__(self, *args, **kwargs):
# Initialize the Handler
logging.Handler.__init__(self, *args)
# optional take format
# setFormatter function is derived from logging.Handler
for key, value in kwargs.items():
if "{}".format(key) == "format":
self.setFormatter(value)
# make the logger send data to this class
self.logger_instance.addHandler(self)
def emit(self, record):
""" Overload of logging.Handler method """
record = self.format(record)
# ---------------------------------------
# Now you can send it to a GUI or similar
# "Do work" starts here.
# ---------------------------------------
# just as an example what e.g. a console
# handler would do:
print(record)
मैं वर्तमान में इसी तरह के कोड का उपयोग कर रहा कार्यावधि में लॉगर आउटपुट देखने के लिए एक TkinterTreectrl.Multilistbox जोड़ने के लिए।
ऑफ़-साइड: लॉगर केवल आरंभ होने पर ही डेटा प्राप्त करता है, इसलिए यदि आप अपना पूरा डेटा उपलब्ध करना चाहते हैं, तो आपको इसे बहुत शुरुआत में प्रारंभ करना होगा। (मुझे पता है कि यह अपेक्षित है, लेकिन मुझे लगता है कि यह उल्लेखनीय है।)
- 1. एक बढ़ती लॉग फ़ाइल देखें/पढ़ें
- 2. फ़ाइल से पढ़ें, इसे साफ़ करें, इसे लिखें
- 3. प्रक्रिया फ़ाइल क्योंकि इसे किसी अन्य प्रक्रिया
- 4. जावा। एफ़टीपी से फ़ाइल पढ़ें लेकिन इसे पूरे
- 5. एक पाठ फ़ाइल से कई टेबल पढ़ें?
- 6. फ़ाइल से पढ़ें, या STDIN
- 7. संपत्तियों से HTML फ़ाइल पढ़ें
- 8. इस तरह से एक फ़ाइल पढ़ें कि अन्य प्रक्रियाओं को
- 9. jquery - एक टेक्स्ट फ़ाइल पढ़ें?
- 10. SQL सर्वर लेनदेन लॉग पढ़ें
- 11. बाहरी भंडारण से फ़ाइल पढ़ें
- 12. स्ट्रीम से एक्सेल फ़ाइल पढ़ें
- 13. विंडोज इवेंट लॉग लिखें/पढ़ें
- 14. पाइथन मल्टीप्रोसेसिंग सुरक्षित रूप से एक फ़ाइल
- 15. एक मेवेन प्रॉपर्टी में एक फ़ाइल पढ़ें
- 16. पर्ल: वेब टेक्स्ट फ़ाइल पढ़ें और इसे "खोलें"
- 17. फ़ाइल से अंतिम बाइट पढ़ें और आकार
- 18. Nlog - एक लॉग फ़ाइल
- 19. सत्र स्टोरेज फ़ाइल से सत्र डेटा पढ़ें
- 20. टेक्स्ट फ़ाइल बनाएं और इसे छुपाएं और पढ़ें केवल सी #
- 21. एक सरणी में एक बाइनरी फ़ाइल पढ़ें
- 22. एक ही लॉग-फ़ाइल
- 23. .NET बाइनरी फ़ाइल पढ़ें प्रदर्शन
- 24. यूनिकोड वर्णों के साथ एक फ़ाइल पढ़ें
- 25. पायथन गुण फ़ाइल से सेलेरी कॉन्फ़िगरेशन पढ़ें
- 26. बाइनरी फ़ाइल से संरचित डेटा पढ़ें -?
- 27. फ़ाइल से इनपुट पढ़ें और तदनुसार
- 28. पढ़ें stdin जब एक फ़ाइल पहले से ही
- 29. एक लाटेक्स अस्थायी फ़ाइल से लिखें और पढ़ें?
- 30. कैसे एक लॉग फ़ाइल
यह भी अच्छा है ... मुझे लगता है कि यह आपके मानदंडों को अच्छी तरह से फिट करता है और एक कक्षा प्रदान करता है जिसे आसानी से बढ़ाया जा सकता है। [http://code.activestate.com/recipes/577968-log-watcher-tail-f-log/](http://code.activestate.com/recipes/577968-log-watcher-tail-f-log /) – mogga