এখানে একটি সুন্দর, পরিপাটি পাইথন সলিউশন। আমি এখানে জ্বলজ্বল হওয়ার চেষ্টা করিনি।
এটি ফাইলের অনুলিপি তৈরি করার পরিবর্তে অনুলিপি পরিবর্তন করে এবং অনুলিপিটির শেষ লাইন থেকে নতুন লাইনটি সরিয়ে দেয়। যদি ফাইলটি বড় হয় তবে এটি সেরা উত্তর হিসাবে নির্বাচিত পার্ল সমাধানের চেয়ে অনেক দ্রুত হবে।
এটি শেষ দুটি বাইট সিআর / এলএফ হলে দুটি বাইট দ্বারা বা শেষ বাইটটি এলএফ হলে একটি বাইট দ্বারা একটি ফাইল কেটে দেয়। শেষ বাইট (গুলি) এলআরএফ না হলে এটি ফাইলটি সংশোধন করার চেষ্টা করে না। এটি ত্রুটিগুলি পরিচালনা করে। পাইথন ২.6 এ পরীক্ষা করা হয়েছে।
এটিকে "স্ট্রাইপ্লাস্ট" নামে একটি ফাইলে রাখুন chmod +x striplast
।
#!/usr/bin/python
# strip newline from last line of a file
import sys
def trunc(filename, new_len):
try:
# open with mode "append" so we have permission to modify
# cannot open with mode "write" because that clobbers the file!
f = open(filename, "ab")
f.truncate(new_len)
f.close()
except IOError:
print "cannot write to file:", filename
sys.exit(2)
# get input argument
if len(sys.argv) == 2:
filename = sys.argv[1]
else:
filename = "--help" # wrong number of arguments so print help
if filename == "--help" or filename == "-h" or filename == "/?":
print "Usage: %s <filename>" % sys.argv[0]
print "Strips a newline off the last line of a file."
sys.exit(1)
try:
# must have mode "b" (binary) to allow f.seek() with negative offset
f = open(filename, "rb")
except IOError:
print "file does not exist:", filename
sys.exit(2)
SEEK_EOF = 2
f.seek(-2, SEEK_EOF) # seek to two bytes before end of file
end_pos = f.tell()
line = f.read()
f.close()
if line.endswith("\r\n"):
trunc(filename, end_pos)
elif line.endswith("\n"):
trunc(filename, end_pos + 1)
পিএস "পার্ল গল্ফ" এর চেতনায়, এখানে আমার সবচেয়ে সংক্ষিপ্ত পাইথন সমাধান। এটি স্ট্যান্ডার্ড ইনপুট থেকে মেমরির মধ্যে পুরো ফাইলটি স্লਪਰ্পস করে, শেষের বাইরে সমস্ত নিউলাইনগুলি সরিয়ে দেয় এবং ফলাফলটি স্ট্যান্ডার্ড আউটপুটে লিখে দেয়। পারেলের মতো নিখরচায় নয়; আপনি সামান্য কৌশলযুক্ত দ্রুত স্টাফের জন্য পার্লকে বীট করতে পারবেন না।
কল থেকে "\ n" সরান .rstrip()
এবং এটি একাধিক ফাঁকা লাইন সহ ফাইলের শেষে থেকে সমস্ত সাদা স্থান কেটে ফেলবে।
এটি "slurp_and_chomp.py" এ রাখুন এবং তারপরে চালান python slurp_and_chomp.py < inputfile > outputfile
।
import sys
sys.stdout.write(sys.stdin.read().rstrip("\n"))