如何用零覆盖文件行

2024-04-18 19:14:43 发布

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

我正在试图找到用零覆盖文件的最佳方法;文件中的每个字符都将替换为0。你知道吗

目前我的工作是:

import fileinput
for line in fileinput.FileInput('/path/to/file', inplace =1):
    for x in line:
        x = 0

但这看起来效率很低,有没有更好的方法呢?你知道吗


Tags: 文件topath方法inimportforline
3条回答

使用regex可能更干净,但这里有一个使用fileinput的解决方案:

import fileinput
import sys
for line in fileinput.FileInput('/path/to/file', inplace=True):
    line = '0' * len(line)
    sys.stdout.write(line + "\n")

注意,如果使用print函数,将添加额外的换行符-因此我使用了sys.stdout.write

与其一个接一个地替换字符,我更喜欢创建一个具有相同名称和大小的新文件:

获取当前文件的大小:

>>> file_info = os.stat("/path/to/file")
>>> size = file_info.st_size

创建另一个包含0x00且大小相同的文件:

>>> f = open("/path/to/file", "w")
>>> f.seek(size  - 1)
>>> f.write("\x00")
>>> f.close()
>>> 

我假设0,你的意思是0x00字节值

也许用正则表达式替换?你知道吗

import re
path = "test.txt"
f = open(path, "r")
data = re.sub(".", "0", f.read())
f.close()
f = open(path, "w")
f.write(data)
f.close()

相关问题 更多 >