প্রতিবার নতুন লাইনে কোনও ফাইলকে স্ট্রিং লিখছে


259

আমি যখনই কল করি তখনই আমার স্ট্রিংয়ে একটি নতুন লাইন যুক্ত করতে চাই file.write()। পাইথনে এটি করার সহজতম উপায় কী?

উত্তর:


294

"\ N" ব্যবহার করুন:

file.write("My String\n")

রেফারেন্সের জন্য পাইথন ম্যানুয়ালটি দেখুন ।


3
আপনি যদি রেকর্ডটি রচনা করতে ভেরিয়েবল ব্যবহার করে থাকেন তবে আপনি ফাইললগ.উইরাইটের (var1 + var2 + "\ n") এর মতো শেষে "" \ n "যুক্ত করতে পারেন।
ফিলিপ

4
পাইথনের নতুন সংস্করণগুলিতে (3.6+) আপনি কেবল এফ স্ট্রিং ব্যবহার করতে পারেন:file.write(f"{var1}\n")
হাফডান

109

আপনি এটি দুটি উপায়ে করতে পারেন:

f.write("text to write\n")

বা, আপনার পাইথন সংস্করণ (2 বা 3) এর উপর নির্ভর করে:

print >>f, "text to write"         # Python 2.x
print("text to write", file=f)     # Python 3.x

আমি f.writlines (str (x)) কে এমন একটি ফাইলে লিখতে ব্যবহার করছি যেখানে এক্স তালিকা রয়েছে এখন নতুন লাইনে শুরু হওয়া প্রতিটি তালিকার অনুলিপি করা কোনও ফাইলের মধ্যে কীভাবে লিঙ্ক x লিখতে হবে তা বলার জন্য
কাউশিক

2
@ কৌশিক: f.writ ('\ n'.join (x)) বা f.writlines (i x' \ n 'আমি এক্স এর জন্য)
স্টিভেন

আমি মনে করি f.writ এর পদ্ধতিটি পাইথন 2 এবং 3 উভয় ক্ষেত্রেই ব্যবহার করা যেতে পারে
ডাং ম্যান ট্রুং

78

তুমি ব্যবহার করতে পার:

file.write(your_string + '\n')

3
আপনি উদাহরণস্বরূপ, ব্যবহারের ব্যবহার করতে পারেন, যখন আপনি একটি ফাইলে একটি int- এ লিখুন, আপনি ব্যবহার করতে পারেন file.write (STR (ক) + \ N ')
未来陆家嘴顶尖的投资人

@ শিখারি কেন? file.write(f"my number is: {number}\n")ঠিক আছে এবং পাঠযোগ্য।
গুইমোট

24

আপনি যদি এটি ব্যাপকভাবে ব্যবহার করেন (প্রচুর লিখিত লাইন), আপনি 'ফাইল' সাবক্লাস করতে পারেন:

class cfile(file):
    #subclass file to have a more convienient use of writeline
    def __init__(self, name, mode = 'r'):
        self = file.__init__(self, name, mode)

    def wl(self, string):
        self.writelines(string + '\n')

এখন এটি একটি অতিরিক্ত ফাংশন ডাব্লুএল প্রদান করে যা আপনি যা চান তা করে:

fid = cfile('filename.txt', 'w')
fid.wl('appends newline charachter')
fid.wl('is written on a new line')
fid.close()

হতে পারে আমি বিভিন্ন নিউলাইন চরিত্রের মতো কিছু অনুপস্থিত (\ n, \ r, ...) বা শেষ লাইনটিও একটি নতুন লাইন দিয়ে শেষ করা হয়েছে, তবে এটি আমার পক্ষে কার্যকর works


1
আপনার return Noneএই ক্ষেত্রে দরকার নেই কারণ প্রথমত, আপনার এটির প্রয়োজন হয় না এবং দ্বিতীয়ত, বিবৃতি Noneনা থাকলে প্রতিটি পাইথন ফাংশন ডিফল্টরূপে ফিরে আসে return
আনা

10

আপনি করতে পারেন:

file.write(your_string + '\n')

অন্য উত্তরের পরামর্শ অনুসারে, তবে আপনি যখন file.writeদু'বার কল করতে পারেন তখন স্ট্রিং কন্ডকেটেশন (ধীর, ত্রুটি-প্রবণ) কেন ব্যবহার করছেন :

file.write(your_string)
file.write("\n")

নোট করুন যে লেখাগুলি বাফার হয়েছে তাই এটি একই জিনিসটির সমান।


6
file_path = "/path/to/yourfile.txt"
with open(file_path, 'a') as file:
    file.write("This will be added to the next line\n")

অথবা

log_file = open('log.txt', 'a')
log_file.write("This will be added to the next line\n")

4
"ডাব্লু" এর পরিবর্তে "এ" দিয়ে একটি ফাইলকে প্যারামিটার হিসাবে খোলার মাধ্যমে আপনি যেভাবে বর্ণনা করেছেন সেভাবে কাজ করতে লেখার কাজটি পরিবর্তন করে না। এটির একমাত্র প্রভাবটি হ'ল ফাইলটি ওভাররাইট করা হবে না এবং ফাঁকা ফাইলের উপরের বামদিকে শুরু করার পরিবর্তে পাঠ্যটি নীচের সর্বাধিক লাইনে যুক্ত হবে।
গণতন্ত্রবিদ

2

কেবল একটি নোট, fileসমর্থিত নয় Python 3এবং সরানো হয়েছিল। openবিল্ট-ইন ফাংশন দিয়ে আপনি একই কাজ করতে পারেন ।

f = open('test.txt', 'w')
f.write('test\n')

2

বাইনারি ফাইলগুলিতে লেখা না থাকলে প্রিন্ট ব্যবহার করুন। সিএসভি ফাইল ফর্ম্যাট করার জন্য উদাহরণের নীচে ভাল:

def write_row(file_, *columns):
    print(*columns, sep='\t', end='\n', file=file_)

ব্যবহার:

PHI = 45
with open('file.csv', 'a+') as f:
    write_row(f, 'header', 'phi:', PHI, 'serie no. 2')
    write_row(f)  # newline
    write_row(f, data[0], data[1])

মন্তব্য:


2

আরেকটি সমাধান যা fstring ব্যবহার করে একটি তালিকা থেকে লিখেছে

lines = ['hello','world']
with open('filename.txt', "w") as fhandle:
  for line in lines:
    fhandle.write(f'{line}\n')

1

নিয়মিতভাবে separa n এর বিভাজক হিসাবে উত্পাদন করতে নিজের জন্য এই সমস্যাটি সমাধান করার চেষ্টা করে আমি এই সমাধানটি নিয়ে এসেছি। এটি স্ট্রিংগুলির একটি তালিকা ব্যবহার করে লিখেছে যেখানে প্রতিটি স্ট্রিং ফাইলের এক লাইন, তবে মনে হয় এটি আপনার জন্যও কার্যকর হতে পারে। (পাইথন ৩. +)

#Takes a list of strings and prints it to a file.
def writeFile(file, strList):
    line = 0
    lines = []
    while line < len(strList):
        lines.append(cheekyNew(line) + strList[line])
        line += 1
    file = open(file, "w")
    file.writelines(lines)
    file.close()

#Returns "\n" if the int entered isn't zero, otherwise "".
def cheekyNew(line):
    if line != 0:
        return "\n"
    return ""

কেন সহজভাবে নয় with open(path, "w") as file: for line in strList: file.write(line + "\n")? এইভাবে আপনি সমস্ত তালিকার কাজ, চেক মুছে ফেলতে পারেন এবং মাত্র 3 টি লাইন রাখতে পারেন।
গুইমোট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.