Python 读取文件并更改字母

Python 读取文件并更改字母,python,Python,我正在使用python,我想读取一个文本文件,并将第一个字符更改为最后一个字符 f = open("words.txt", 'r') print f.readline() k = f[1:]+f[0] print k f.close() 如果要更改文件中的每一行,可以使用withinplace=True修改原始文件: from fileinput import input for line in input("foo.txt", inplace=True): line = line.

我正在使用python,我想读取一个文本文件,并将第一个字符更改为最后一个字符

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

如果要更改文件中的每一行,可以使用with
inplace=True
修改原始文件:

from fileinput import input

for line in input("foo.txt", inplace=True):
    line = line.rstrip()
    print(line[1:] + line[0])
如果您希望仅将第一个字符添加到最后一行,而不同时读取所有数据,则可以将其写入,并使用更新的tempfile替换原始文件

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")
So 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")

但是您在内存中保留了两份数据副本,因此可能无法处理非常大的文件。

为什么您只读取一行?您可能需要使用
文件。读取
问题在于将文本文件中的第一个字符更改为最后一个字符