2015-09-13 74 views
1

我使用Python和我想讀一個文本文件,並更改第一個字符是最後ReadFile和變化字母

f = open("words.txt", 'r') 
print f.readline() 
k = f[1:]+f[0] 
print k 
f.close() 
+0

你爲什麼只讀一行?您可能想要使用'file.read' –

+0

問題是關於將第一個字符更改爲文本文件中的最後一個字符 –

回答

2

如果要更改文件中的每一行,你可以使用fileinput.inputinplace=True修改原始文件:

from fileinput import input 

for line in input("foo.txt", inplace=True): 
    line = line.rstrip() 
    print(line[1:] + line[0]) 

如果你想第一個字符添加到剛剛沒有一次可以寫入NamedTemporaryFile讀取所有數據的最後一行,並做了shutil.move,以取代原來的文件更新臨時文件

from tempfile import NamedTemporaryFile 
from shutil import move 

with open("foo.txt") as f, NamedTemporaryFile("w", dir=".", delete=False) as out: 
    ln = sum(1 for _ in f) 
    f.seek(0) 
    start = next(f) 
    ch = start[0] 
    out.write(start[1:]) 
    for ind, line in enumerate(f, 2): 
     if ind == ln: 
      out.write("{}\n".format(line.rstrip()+ch)) 
     else: 
      out.write(line) 

move(out.name,"foo.txt") 

所以foo.txt的:

123 
456 
789 

公司將其替換:

23 
456 
7891 

你可以.read打電話片和替換這將對於小文件是罰款:

from tempfile import NamedTemporaryFile 
from shutil import move 
with open("foo.txt") as f, NamedTemporaryFile("w", dir=".", delete=False) as out: 
    data = f.read().rstrip() 
    out.write("{}\n".format(data[1:] + data[0])) 

move(out.name,"foo.txt") 

但你將兩份數據保存在內存中,這樣可能無法用於非常大的文件。