2016-06-09 71 views
0

當我看它寫的東西時,總是加倍。例如,如果我寫'狗'生病'狗狗'。爲什麼?正如我所說的,我得到的輸出是什麼輸入我給雙重價值爲什麼我的腳本將兩個輸入字符串寫入輸出文件兩次?

from sys import argv 

script,text=argv 

def reading(f): 
    print f.read() 

def writing(f): 
    print f.write(line) 

filename=open(text) 
#opening file 

reading(filename) 

filename.close() 

filename=open(text,'w') 

line=raw_input() 

filename.write(line) 

writing(filename) 

filename.close() 

讀取和寫入到文件,從命令行參數取文件名。

回答

0

如果你想顯示每一行然後寫一個新行,你可能應該首先讀取整個文件,然後在寫新內容時遍歷行。

下面介紹如何做到這一點。當您使用with open()時,您不必close()該文件,因爲這是自動完成的。

from sys import argv 
filename = argv[1] 

# first read the file content 
with open(filename, 'r') as fp: 
    lines = fp.readlines() 

# `lines` is now a list of strings. 

# then open the file for writing. 
# This will empty the file so we can write from the start. 
with open(filename, 'w') as fp: 
    # by using enumerate, we can get the line numbers as well. 
    for index, line in enumerate(lines, 1): 
     print 'line %d of %d:\n%s' % (index, len(lines), line.rstrip()) 
     new_line = raw_input() 
     fp.write(new_line + '\n') 
+0

感謝您的幫助。 – Mercurius

0

你得到雙重價值,因爲你是從函數調用

def writing(f): 
    print f.write(line) 

2)兩次寫入

1)利用filename.write(line)

使用此代碼文件中寫入:

from sys import argv 

script,text=argv 

def reading(f): 
    print f.read() 

def writing(f): 
    print f.write(line) 

filename=open(text,'w') 

line=raw_input() 

writing(filename) 

filename.close() 

也不需要關閉文件兩次,一旦你完成所有的讀寫操作,然後關閉它。

+0

那麼我想顯示什麼是在文件中,並寫上它的一些其他文字。 – Mercurius