2014-03-26 253 views
0

我需要編輯我的文件並保存,以便我可以將它用於其他程序。首先,我需要在每個單詞之間加上「,」,並在每行的末尾添加一個單詞。編輯並保存文件

爲了在每一個字之間放「」我用這個命令

for line in open('myfile','r+') : 
    for word in line.split(): 
     new = ",".join(map(str,word)) 
     print new 

我不是太清楚如何覆蓋原有文件或可能創建用於編輯的版本一個新的輸出文件。我試過這樣的東西

with open('myfile','r+') as f: 
    for line in f: 
     for word in line.split(): 
      new = ",".join(map(str,word)) 
      f.write(new) 

輸出不是我想要的(不同於打印新的)。其次,我需要在每一行的末尾添加一個單詞。所以,我試過這個

source = open('myfile','r') 
output = open('out','a') 
output.write(source.read().replace("\n", "yes\n")) 

添加新單詞的代碼完美地工作。但我認爲應該有一種更簡單的方法來打開文件,一次做兩次編輯並保存。但我不太確定。我花了大量的時間來弄清楚如何覆蓋文件,這是我尋求幫助的時間

回答

0

在這裏你去:

source = open('myfile', 'r') 
output = open('out','w') 
output.write('yes\n'.join(','.join(line.split()) for line in source.read().split('\n'))) 

一行代碼:

open('out', 'w').write('yes\n'.join(','.join(line.split() for line in open('myfile', 'r').read().split('\n'))) 

或者更清晰:

source = open('myfile', 'r') 
processed_lines = [] 
for line in source: 
    line = ','.join(line.split()).replace('\n', 'yes\n') 
    processed_lines.append(line) 
output = open('out', 'w') 
output.write(''.join(processed_lines)) 

編輯 顯然我誤解了一切,哈哈。

#It looks like you are writing the word yes to all of the lines, then spliting 
#each word into letters and listing those word's letters on their own line? 
source = open('myfile','r') 
output = open('out','w') 
for line in source: 
    for word in line.split(): 
     new = ",".join(word) 
     print >>output, new 
    print >>output, 'y,e,s' 
+0

對不起,但你給我的任何代碼都不適合我。它們都不會在每個單詞之間產生帶有「,」的輸出。他們只在每一行的末尾添加'yes'來產生輸出。所以基本上輸出和我的第三個代碼一樣。 – user3072782

+0

哎呀!很容易修復... – Broseph

+0

固定。謝謝 – user3072782

0

這個文件有多大? 也許您可以創建一個臨時列表,其中只包含您要編輯的文件的所有內容。每個元素可以代表一行。 編輯字符串列表非常簡單。 您更改後你可以再次

writable = open('configuration', 'w') 

打開您的文件,然後把更改的行與

file.write(writable, currentLine + '\n') 

到文件。 希望有所幫助 - 即使是一點點。 ;)

0

對於第一個問題,您可以在覆蓋f之前讀取f中的所有行,假設f以'r +'模式打開。追加所有結果轉換成字符串,然後執行:

f.seek(0) # reset file pointer back to start of file 
f.write(new) # new should contain all concatenated lines 
f.truncate() # get rid of any extra stuff from the old file 
f.close() 

對於第二個問題,解決方法是相似的:讀取整個文件,進行編輯,請致電f.seek(0),寫的內容,F .truncate()和f.close()。

+0

我的第二個代碼,即在每一行添加新詞並保存文件完美。但是我想在每個單詞之間添加「,」,然後在每個文件的末尾添加一個新單詞,而不必打開和關閉文件兩次。 – user3072782

+0

你可以做類似'source = open('myfile','r +')txt = source.read()。replace(「\ n」,「yes \ n」)source.seek(0)source.write txt)source.truncate()source.close()'。 –