Python 按给定位置替换文件中的字符串
我在“ab+”模式下打开了一个文件 我需要做的是用另一个字符串的字节替换文件中的一些字节,以便: 文件: 字符串:Python 按给定位置替换文件中的字符串,python,string,replace,seek,Python,String,Replace,Seek,我在“ab+”模式下打开了一个文件 我需要做的是用另一个字符串的字节替换文件中的一些字节,以便: 文件: 字符串: 01234 例如,我寻找位置(4,0),我想把01234写在文件中“issom”的位置。最后一次露面是: 此01234 ething非常好 网上有一些解决方案,但所有这些(至少我能找到的)都是基于“首先在文件中找到一个字符串,然后用另一个字符串替换它”。因为我的案例是基于查找的,所以我对解决方案感到困惑。您可以将文件映射为mmap(),然后使用切片表示法更新文件中的特定字节范围。
01234
例如,我寻找位置(4,0),我想把01234写在文件中“issom”的位置。最后一次露面是:
此01234 ething非常好
网上有一些解决方案,但所有这些(至少我能找到的)都是基于“首先在文件中找到一个字符串,然后用另一个字符串替换它”。因为我的案例是基于查找的,所以我对解决方案感到困惑。您可以将文件映射为mmap(),然后使用切片表示法更新文件中的特定字节范围。这个例子应该会有所帮助。您可以使用mmap来实现这一点
import os,mmap
f=os.open("afile",os.O_RDWR)
m=mmap.mmap(f,0)
m[4:9]="01234"
os.close(f)
请张贴您的密码。你的
seek(4,0)
的大纲是完美和正确的。你的问题是什么?请发布不起作用的代码,因为——从您所说的来看——它应该可以完美地工作。谢谢或提供相关信息。还有一个问题;正如我所说,我有一个在“ab+”模式下打开的文件。我应该用你的方法和前一个一起再打开它,还是只是再打开一次关闭另一个?我忘了提;我只是想为自己的使用修改一个简单的服务器应用程序。是的,你必须像这样打开它。模式中的“a”会在每次写入之前查找到文件的结尾,因此您永远不能使用该文件在文件中的任何其他位置写入file@gnibbler:实际上,您可以在文件中的任何位置使用“ab+”-“+”表示其打开以进行更新,它恰好从尾部开始。然而,mmap确实需要操作系统级的文件句柄,而不是python文件包装器对象,但是,您应该能够通过在file对象上传递调用fileno()
的结果来实现这一点。ief=open('file','a+');m=mmap.mmap(f.fileno(),0)代码>@Brian:这或多或少就是我的意思;)谢谢
import os,mmap
f=os.open("afile",os.O_RDWR)
m=mmap.mmap(f,0)
m[4:9]="01234"
os.close(f)