我是python中的新手。 我正在尝试修改文件中的一行,这是在使用linecache捕获此行之后。
run_D = open('toto.dat','r')
lines = run_D.readlines()
print "Name of the file: ", run_D.name
seq=["%s'retrieve'"]
line_1 = linecache.getline('toto.dat', 51)
lines_runD = run_D.readlines()
run_D.close()
lines_runD[50]="%s !yop \n".format(seq) #--> this part seems not working
fic = open('toto.dat','w')
fic.writelines(lines_runD)
fic.close()
我有这个错误:
我尝试了很多格式类型,但遗憾的是它仍无法正常工作。你有一些提示:)
谢谢。
答案 0 :(得分:1)
我认为你混合了两件事:linecache
和readlines
。
来自docs:
linecache模块允许从任何文件获取任何行,同时尝试使用缓存进行内部优化,这是从单个文件中读取许多行的常见情况。
这意味着,您可以非常轻松地使用linecache
读取第51行
import linecache
line_1 = linecache.getline('toto.dat', 51)
print line_1
您可以使用以下代码实现相同的目标:
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( )
使用with语句可以更轻松,更安全地处理文件,因为它会为您关闭它。
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提供了许多输入输出库,具有许多有用的功能。只需搜索它们,你一定会得到一些很好的例子。
检查以下问题以便进一步学习:
How do I modify a text file in Python?