替换现有大型fi中的字符

2024-06-01 05:08:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我的本地磁盘中有一个大文件,其中第一行包含一些固定长度的字符串。我需要使用python以编程方式替换固定长度的字符串,而无需读取内存中的整个文件。在

我尝试过在追加模式下打开文件,并搜索到0位置。然后替换9字节的字符串。代码也加在这里,我试过了。在

    with open ("largefile.txt", 'a') as f:
        f.seek(0,0)
        f.write("123456789")

Tags: 文件内存字符串代码txt字节as编程
1条回答
网友
1楼 · 发布于 2024-06-01 05:08:16

我认为您只想打开文件进行写入而不截断它,这将是r+。为了使其可复制,我们首先创建一个与此格式匹配的文件:

with open('many_lines.txt', 'w') as fd:
    print('abcdefghi', file=fd)
    for i in range(10000):
        print(f'line {i:09}', file=fd)

然后我们基本上按照你所做的去做,但是使用正确的模式:

^{pr2}$

或者您可以直接使用write,与:

with open('many_lines.txt', 'r+') as fd:
    fd.write('123456789')

注意:我在r+中打开,这样如果不存在FileNotFoundError(或者文件名拼写错误),而不是盲目地创建一个小文件

open模式是直接从C/POSIX API for the ^{}复制的,因此使用a将触发如下行为:

Subsequent writes to the file will always end up at the then current end of file, irrespective of any intervening fseek(3) or similar

相关问题 更多 >