python - आप फ़ाइल में कैसे जुड़ते हैं?




file append (6)

आप शायद "a" को मोड तर्क के रूप में पास करना चाहते हैं। open() लिए दस्तावेज़ देखें।

with open("foo", "a") as f:
    f.write("cool beans...")

(+), Truncating (w) और बाइनरी (बी) मोड को अद्यतन करने के लिए मोड तर्क के अन्य क्रमपरिवर्तन हैं, लेकिन केवल "a" से शुरू करना आपकी सबसे अच्छी शर्त है।

आप इसे ओवरराइट करने के बजाय फ़ाइल में कैसे जोड़ते हैं? क्या कोई विशेष फ़ंक्शन है जो फ़ाइल में संलग्न होता है?


जब हम इस लाइन का उपयोग open(filename, "a") का उपयोग करते हैं, जो कि फ़ाइल को जोड़ने का संकेत देता है, जिसका अर्थ है कि मौजूदा फ़ाइल में अतिरिक्त डेटा डालने की अनुमति है।

आप अपनी फ़ाइल में टेक्स्ट को जोड़ने के लिए बस निम्न पंक्तियों का उपयोग कर सकते हैं

def FileSave(filename,content):
    with open(filename, "a") as myfile:
        myfile.write(content)

FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")

फ़ंक्शन append_data_to_file() जो किसी मौजूदा फ़ाइल में डेटा जोड़ सकता है, निम्नानुसार है:

import os

def append_data_to_file(path, data):
    with open(path, 'a') as file:
        file.write(data+'\n')

मान लें कि आपके पास एक फ़ाइल biki.txt , जिसमें biki.txt शामिल हैं:

http://www.youtube.com/watch?v=6INqTUEnitkhttp://www.youtube.com/watch?v=6M6GT5xJhHohttp://www.youtube.com/watch?v=6q1SuHTqY0Ahttp://www.youtube.com/watch?v=6w2kORM6gvQ

आइए मान लें कि आप इसे न्यूलाइन प्रारूप में चाहते हैं और दूसरी फ़ाइल में सहेजते हैं, new.txt :

http://www.youtube.com/watch?v=6INqTUEnitk
http://www.youtube.com/watch?v=6M6GT5xJhHo
http://www.youtube.com/watch?v=6q1SuHTqY0A
http://www.youtube.com/watch?v=6w2kORM6gvQ

यहां है कि इसे कैसे करना है:

#!/usr/bin/env python
import re
import os
import sys
### Coding to arrange matching in new line
with open("biki.txt","r") as myfile:
    mydata = myfile.read()
    data = mydata.replace("http","%http")
    for m in range(1,1000): ## For loop is use here
       dat1 = data.split('%')[m] ## Contain of split file
       f = open("new.txt","a") ## file open in appending mode i.e 'a'
       f.write(dat1) ## writing the contain dat1  to new.txt
       f.close() ## File closing after writing.

मोड के रूप में "ए" या "एबी" सेट करके, आपको एपेंड मोड में फ़ाइल खोलनी होगी। open() देखें।

जब आप "ए" मोड के साथ खुलते हैं, तो लेखन स्थिति हमेशा फ़ाइल के अंत में होगी (एक संलग्न)। आप पढ़ने के लिए "ए +" के साथ खोल सकते हैं, पीछे की ओर खोज सकते हैं और पढ़ सकते हैं (लेकिन सभी लिखने अभी भी फाइल के अंत में होंगे!)।

उदाहरण:

>>> with open('test1','wb') as f:
        f.write('test')
>>> with open('test1','ab') as f:
        f.write('koko')
>>> with open('test1','rb') as f:
        f.read()
'testkoko'

नोट : 'ए' का उपयोग करना 'डब्ल्यू' के साथ खोलने और फ़ाइल के अंत की तलाश के समान नहीं है - विचार करें कि क्या हो सकता है यदि कोई अन्य प्रोग्राम फ़ाइल खोलता है और खोज और लिखने के बीच लिखना शुरू कर देता है। कुछ ऑपरेटिंग सिस्टम पर, 'ए' के ​​साथ फ़ाइल खोलने की गारंटी है कि आपके सभी निम्नलिखित लिखने पर फ़ाइल के अंत में परमाणु रूप से जोड़ा जाएगा (भले ही फ़ाइल अन्य लिखने से बढ़ती है)।

"ए" मोड कैसे काम करता है ( केवल लिनक्स पर परीक्षण ) के बारे में कुछ और विवरण। यहां तक ​​कि यदि आप वापस खोजना चाहते हैं, तो भी प्रत्येक फ़ाइल फ़ाइल के अंत में संलग्न होगी:

>>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session
>>> f.write('hi')
>>> f.seek(0)
>>> f.read()
'hi'
>>> f.seek(0)
>>> f.write('bye') # Will still append despite the seek(0)!
>>> f.seek(0)
>>> f.read()
'hibye'

वास्तव में, fopen manpage कहता है:

एपेंड मोड में एक फ़ाइल खोलना (मोड के पहले अक्षर के रूप में) इस धारा में आने वाले सभी लिखने के संचालन का कारण अंत में फ़ाइल पर होता है, जैसे कि कॉल से पहले:

fseek(stream, 0, SEEK_END);

पुराना सरलीकृत उत्तर ( with उपयोग नहीं कर रहा with ):

उदाहरण: ( वास्तविक प्रोग्राम में फ़ाइल को बंद करने के with उपयोग करें - दस्तावेज़ीकरण देखें )

>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'

यहां मेरी लिपि है, जो मूल रूप से लाइनों की संख्या की गणना करती है, फिर संलग्न करती है, फिर उन्हें फिर से गिना जाता है ताकि आपके पास सबूत हो।

shortPath  = "../file_to_be_appended"
short = open(shortPath, 'r')

## this counts how many line are originally in the file:
long_path = "../file_to_be_appended_to" 
long = open(long_path, 'r')
for i,l in enumerate(long): 
    pass
print "%s has %i lines initially" %(long_path,i)
long.close()

long = open(long_path, 'a') ## now open long file to append
l = True ## will be a line
c = 0 ## count the number of lines you write
while l: 
    try: 
        l = short.next() ## when you run out of lines, this breaks and the except statement is run
        c += 1
        long.write(l)

    except: 
        l = None
        long.close()
        print "Done!, wrote %s lines" %c 

## finally, count how many lines are left. 
long = open(long_path, 'r')
for i,l in enumerate(long): 
    pass
print "%s has %i lines after appending new lines" %(long_path, i)
long.close()




append