আপনি পুরো ফাইলটি এবং বিভক্ত লাইনগুলি ব্যবহার করে এটি পড়তে পারেন str.splitlines
:
temp = file.read().splitlines()
অথবা আপনি হাতছাড়া করে নতুন লাইনটি ছিনিয়ে নিতে পারেন:
temp = [line[:-1] for line in file]
দ্রষ্টব্য: এই শেষ সমাধানটি কেবল তখনই কাজ করে যদি ফাইলটি একটি নতুন লাইন দিয়ে শেষ হয়, অন্যথায় শেষ লাইনটি একটি অক্ষর হারাবে।
এই ধৃষ্টতা অধিকাংশ ক্ষেত্রে (বিশেষ করে টেক্সট এডিটর, যা প্রায়ই দ্বারা নির্মিত ফাইলের জন্য সত্য না যাহাই হউক না কেন শেষের সম্পর্কে newline যোগ করুন)।
আপনি যদি এড়াতে চান তবে আপনি ফাইলের শেষে একটি নতুন লাইন যুক্ত করতে পারেন:
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()
রাখে keeps
নোট: থেকে প্রতিসাম্য জন্য পদ্ধতি নেই না নতুন লাইন বিভক্তি যোগ, তাই এর একটি সঠিক অনুলিপি উৎপন্ন মধ্যে ।readlines()
writelines()
f2.writelines(f.readlines())
f
f2
[l.strip('\n\r') for l in temp]
। বা এমনকিrstrip
। এবং পুনরাবৃত্তি যেহেতু এখানে এটিin open
পরিবর্তে হতে পারেin temp
।