【发布时间】:2018-06-26 03:30:10
【问题描述】:
因此,我正在尝试创建一个程序,该程序将自动编辑文件中的一组特定字符(它将读取并替换它们)。不能在文件中移动其他数据,否则可能会损坏,因此我需要将文本替换在与以前完全相同的位置。我环顾四周,没有发现任何有用的东西,但到目前为止,这是我的代码:
l = 3
w = 0
with open("InidCrd000.crd") as myfile:
hexWord = myfile.readlines()[l].split()[w]
codeA = hexWord[58]
codeB = hexWord[59]
print("Current value: ", codeA, codeB)
codeA = " "
codeB = "Ð"
print("New value: ", codeA, codeB)
编辑 - 我现在有这个代码(信用 - Ilayaraja),它可以工作,但它会将文件分成几行并将随机数据放置在不正确的位置(尽管输入的数据是正确的位置):
def replace(filepath, lineno, position, newchar):
with open(filepath, "r") as reader:
lines = reader.readlines()
l = lines[lineno-1]
l = l[0:position] + newchar + l[position+1:]
lines[lineno-1] = l
with open(filepath, "w") as writer:
writer.writelines(lines)
replace("InidCrd000.crd", 4, 57, "")
replace("InidCrd000.crd", 4, 58, "Ð")
如果你想要测试文件,这里是:1drv.ms/u/s!AqRsP9xMA0g1iqMl-ZQbXUqX2WY8aA(这是一个onedrive文件)
【问题讨论】:
-
你能从输入文件中显示一个sn-p吗?
-
这是一个小的 sn-p(文件通常通过十六进制编辑,但我正在编写这个程序来帮助无法十六进制编辑的人):aÐP°À € ‚i‚c‚q ‚X‚X D T! ÿÿÿÿ
-
被替换的位是“Д部分(我知道我正在用自己覆盖它,但在其他文件中它将是一个不同的值)
-
@Ricochet1136 如果它是二进制文件,则将其作为二进制文件打开并替换字节而不是字符。
-
好主意,但我仍然需要弄清楚如何覆盖特定行上的特定位置
标签: python file character overwrite