捕获行并用python修改它

捕获行并用python修改它,python,linecache,Python,Linecache,我是python的新手。 我目前正试图修改文件中的一行,这是在使用linecache捕获该行之后 例如: 然后,我想修改行的内容: 我有一个错误: 索引器:列表索引超出范围 我尝试了许多格式类型,但不幸的是它仍然不起作用。你有什么建议吗:) 谢谢。我想你混合了两件事:linecache和readlines 1.线路缓存 从: linecache模块允许用户从任何文件获取任何行,同时尝试使用缓存进行内部优化,这是从单个文件读取多行的常见情况 这意味着,您可以使用linecache非常轻松地读取行号

我是python的新手。 我目前正试图修改文件中的一行,这是在使用linecache捕获该行之后

例如: 然后,我想修改行的内容: 我有一个错误:

索引器:列表索引超出范围 我尝试了许多格式类型,但不幸的是它仍然不起作用。你有什么建议吗:)


谢谢。

我想你混合了两件事:
linecache
readlines

1.线路缓存 从:

linecache模块允许用户从任何文件获取任何行,同时尝试使用缓存进行内部优化,这是从单个文件读取多行的常见情况

这意味着,您可以使用
linecache
非常轻松地读取行号51:

import linecache
line_1 = linecache.getline('toto.dat', 51)
print line_1

2.阅读线 您可以通过以下代码实现相同的功能:

f = open( 'toto.dat' )
flines = f.readlines()
f.close( )
print flines[50]
然后,您可以修改行号51,如下所示:

flines[50] = ' new incoming text!\n '
f = open( 'toto.dat', 'wt' )
for l in flines:
    f.write(l)
f.close( )
2.x。具有 该语句使处理文件更容易、更安全,因为它负责为您关闭文件

with open( 'toto.dat', 'r' ) as f:
    flines = f.readlines()
print flines[50] 

with open( 'toto.dat', 'wt' ) as f:
    for l in flines:
        f.write( l )
*推荐 请注意,这些方法都是低级的,建议您在真正了解所做工作后,学习基础知识或编写更复杂的函数。Python提供了大量的输入输出库,具有许多有用的特性。只要搜索一下,你肯定会得到一些很好的例子

例如,检查以下问题以进一步了解:


我有几点建议。1.检查
行的长度。2.对格式字符串使用
{0}
,而不是
%s
。是的,我也尝试过。不幸的是,我仍然有同样的错误
flines[50] = ' new incoming text!\n '
f = open( 'toto.dat', 'wt' )
for l in flines:
    f.write(l)
f.close( )
with open( 'toto.dat', 'r' ) as f:
    flines = f.readlines()
print flines[50] 

with open( 'toto.dat', 'wt' ) as f:
    for l in flines:
        f.write( l )