Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按给定位置替换文件中的字符串_Python_String_Replace_Seek - Fatal编程技术网

Python 按给定位置替换文件中的字符串

Python 按给定位置替换文件中的字符串,python,string,replace,seek,Python,String,Replace,Seek,我在“ab+”模式下打开了一个文件 我需要做的是用另一个字符串的字节替换文件中的一些字节,以便: 文件: 字符串: 01234 例如,我寻找位置(4,0),我想把01234写在文件中“issom”的位置。最后一次露面是: 此01234 ething非常好 网上有一些解决方案,但所有这些(至少我能找到的)都是基于“首先在文件中找到一个字符串,然后用另一个字符串替换它”。因为我的案例是基于查找的,所以我对解决方案感到困惑。您可以将文件映射为mmap(),然后使用切片表示法更新文件中的特定字节范围。

我在“ab+”模式下打开了一个文件

我需要做的是用另一个字符串的字节替换文件中的一些字节,以便:

文件:

字符串:

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()
的结果来实现这一点。ie
f=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)