आप पूरी फ़ाइल और स्प्लिट लाइनों का उपयोग करके पढ़ सकते हैं str.splitlines
:
temp = file.read().splitlines()
या आप हाथ से नई रेखा खींच सकते हैं:
temp = [line[:-1] for line in file]
नोट: यह अंतिम समाधान केवल तभी काम करता है जब फ़ाइल एक नई पंक्ति के साथ समाप्त होती है, अन्यथा अंतिम पंक्ति एक चरित्र खो देगी।
यह धारणा ज्यादातर मामलों में सच है (विशेष रूप से पाठ संपादकों द्वारा बनाई गई फ़ाइलों के लिए, जो अक्सर किसी भी तरह एक नई रूपरेखा जोड़ते हैं)।
यदि आप इससे बचना चाहते हैं तो आप फ़ाइल के अंत में एक नई पंक्ति जोड़ सकते हैं:
with open(the_file, 'r+') as f:
f.seek(-1, 2) # go at the end of the file
if f.read(1) != '\n':
# add missing newline if not already present
f.write('\n')
f.flush()
f.seek(0)
lines = [line[:-1] for line in f]
या strip
इसके बजाय एक सरल विकल्प न्यूलाइन के लिए है:
[line.rstrip('\n') for line in file]
या यहां तक कि, हालांकि बहुत अपठनीय:
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
जो इस तथ्य का फायदा उठाता है कि वापसी मूल्य or
एक बूलियन नहीं है, लेकिन उस वस्तु का मूल्यांकन किया गया था जो सही या गलत था।
readlines
विधि वास्तव में के बराबर है:
def readlines(self):
lines = []
for line in iter(self.readline, ''):
lines.append(line)
return lines
# or equivalently
def readlines(self):
lines = []
while True:
line = self.readline()
if not line:
break
lines.append(line)
return lines
चूंकि readline()
न्यूलाइन भी readlines()
रखता है।
नोट: करने के लिए समरूपता के लिए विधि है नहीं नई पंक्तियां न खत्म होने वाली जोड़ते हैं, ताकि की एक सटीक प्रतिलिपि का उत्पादन में ।readlines()
writelines()
f2.writelines(f.readlines())
f
f2
[l.strip('\n\r') for l in temp]
। या भीrstrip
। और यात्रा यहाँ के बाद से यह हो सकता हैin open
के बजायin temp
।