software - python tutorial




एक फ़ाइल की शुरुआत करने के लिए लाइन तैयार करें (4)

अलग विचार:

(1) आप मूल फ़ाइल को चर के रूप में सहेजते हैं।

(2) आप मूल फ़ाइल को नई जानकारी के साथ ओवरराइट करते हैं।

(3) आप मूल फ़ाइल को नई जानकारी के नीचे डेटा में जोड़ते हैं।

कोड:

with open(<filename>,'r') as contents:
      save = contents.read()
with open(<filename>,'w') as contents:
      contents.write(< New Information >)
with open(<filename>,'a') as contents:
      contents.write(save)

मैं इसे एक अलग फ़ाइल का उपयोग कर कर सकता हूं, लेकिन मैं फ़ाइल की शुरुआत में एक लाइन कैसे जोड़ूं?

f=open('log.txt','a')
f.seek(0) #get to the first position
f.write("text")
f.close()

यह फ़ाइल के अंत से लिखना शुरू करता है क्योंकि फ़ाइल संलग्न मोड में खोला जाता है।


उन सभी फाइल सिस्टमों में जिन्हें मैं परिचित हूं, आप इन जगहों पर ऐसा नहीं कर सकते हैं। आपको एक सहायक फ़ाइल का उपयोग करना होगा (जिसे आप मूल फ़ाइल का नाम लेने के लिए नाम दे सकते हैं)।


किसी भी अंतर्निहित कार्यों के साथ ऐसा करने का कोई तरीका नहीं है, क्योंकि यह बहुत अक्षम होगा। प्रत्येक बार जब आप सामने की रेखा जोड़ते हैं तो आपको फ़ाइल की मौजूदा सामग्री को नीचे स्थानांतरित करने की आवश्यकता होगी।

एक यूनिक्स / लिनक्स उपयोगिता tail जो फ़ाइल के अंत से पढ़ सकती है। शायद आप अपने आवेदन में यह उपयोगी पा सकते हैं।


मोड 'a' या 'a+' , फ़ाइल के अंत में कोई भी लेखन किया जाता है, भले ही वर्तमान पल में जब write() फ़ंक्शन ट्रिगर होता है तो फ़ाइल का सूचक फ़ाइल के अंत में नहीं होता है: पॉइंटर होता है किसी भी लेखन से पहले फ़ाइल के अंत में चले गए। आप दो शिष्टाचार में जो चाहते हैं वह कर सकते हैं।

फ़ाइल को लोड करने के लिए कोई समस्या नहीं है, तो पहला तरीका , इस्तेमाल किया जा सकता है:

def line_prepender(filename, line):
    with open(filename, 'r+') as f:
        content = f.read()
        f.seek(0, 0)
        f.write(line.rstrip('\r\n') + '\n' + content)

दूसरा तरीका :

def line_pre_adder(filename, line_to_prepend):
    f = fileinput.input(filename, inplace=1)
    for xline in f:
        if f.isfirstline():
            print line_to_prepend.rstrip('\r\n') + '\n' + xline,
        else:
            print xline,

मुझे नहीं पता कि यह विधि हुड के नीचे कैसे काम करती है और यदि इसे बड़ी बड़ी फ़ाइल पर नियोजित किया जा सकता है। इनपुट में उत्तीर्ण तर्क 1 है जो एक पंक्ति को फिर से लिखने की अनुमति देता है; इन लाइनों को आगे या पीछे स्थानांतरित किया जाना चाहिए ताकि इनस्थल ऑपरेशन हो, लेकिन मुझे तंत्र नहीं पता है






python