2009-10-27 12 views
38

वहाँ एक एक लाइनर पायथन में एक फ़ाइल के सभी लाइनों, बल्कि मानक की तुलना में पढ़ने के लिए है लाइनर। कोई विचार?अजगर फ़ाइल Slurp

+13

मजेदार, मुझे इसकी आवश्यकता है और मैं इसके लिए गुगल हूं। कभी नहीं सोचा कि मेरा खुद का सवाल आ जाएगा :) –

+0

मैं यह भी ढूंढ रहा हूं जब मैं वास्तव में http://stackoverflow.com/questions/1450393/how-do-you-read-from-stdin-in-python – tripleee

उत्तर

87

यह अजगर 2.6 में एक भी स्ट्रिंग में सामग्री slurp जाएगा और इसके बाद के संस्करण:

with open('x.txt') as x: f = x.read() 

और यह लाइनों की एक सूची बना देगा:

with open('x.txt') as x: f = x.readlines() 

इन तरीकों तत्काल बंद करने की गारंटी पढ़ने के बाद इनपुट फ़ाइल के ठीक बाद।

पाद-टिप्पणी:

  1. यह दृष्टिकोण भी from __future__ import with_statement का उपयोग कर अजगर 2.5 में इस्तेमाल किया जा सकता है।

एक पुराना दृष्टिकोण है कि नहीं गारंटी तत्काल बंद करता है इस का उपयोग करने के लिए एक स्ट्रिंग बनाने के लिए है:

f = open('x.txt').read() 

और यह लाइनों की एक सूची बनाने के लिए:

f = open('x.txt').readlines() 

अभ्यास में इसे तुरंत सीपीथॉन के कुछ संस्करणों में बंद कर दिया जाएगा, लेकिन बंद "केवल कचरा कलेक्टर इसके आसपास हो जाता है "ज्योथन, आयरनपीथन, और शायद सीपीथन के कुछ भविष्य के संस्करण में।

+0

की तलाश में हूं मैंने यही अनुमान लगाया होगा, लेकिन यह नहीं पता था कि खुली फाइल कब बंद होगी। धन्यवाद! –

-1

आप python3 पर हैं, तो सुनिश्चित करें कि आप ठीक से अपनी फ़ाइल का इनपुट एनकोडिंग, उदा .:

import codecs 
with codecs.open(filename, 'r', encoding="utf8") as file: 
    cts = file.read() 

Python3 codec list में कोडेक नामों की सूची का पता लगाएं का सम्मान करते हैं। (जब भी आप किसी भी गैर-ASCII इनपुट की अपेक्षा करते हैं तो पाइथन 2 के लिए तंत्र भी सलाह दी जाती है)

+0

मुझे पता है कि यह क्यों मतदान किया जाता है। –

+2

कुछ लोग एन्कोडिंग समस्या को विषय-वस्तु मान सकते हैं। साथ ही, मेरा कोड न्यूनतम नहीं है: 'ओपन (फ़ाइल नाम,' आर ', एन्कोडिंग =' utf8 ') के रूप में बिल्टिन' ओपन 'का उपयोग करके' आयात कथन को सहेज लेगा और उत्तर को प्रश्न के साथ बेहतर फिट कर देगा। –