如何更改文件中的一个字符?任何符合nix标准的编程语言解决方案都是受欢迎的。
我写了.pgm文件并将幻数放到'P2'。正确的是'P5'。现在我有100000多个文件需要修复。或者:如何使用pylab.imread()读取我的新文件?
仅供参考:pgm是一种ascii图像文件格式http://netpbm.sourceforge.net/doc/pgm.html。 pylab和PIL需要幻数为P5
BR, 尤哈
编辑:感谢您提供所有解决方案。 dd-method是唯一有效的方法。为了好奇,为什么c和python没有?
答案 0 :(得分:4)
谈论不涉及Python的解决方案,可以是:
echo -n "P5" | dd of=yourfile.pgm conv=notrunc
这会导致dd在文件的开头写“P5”而不截断它
答案 1 :(得分:1)
在python中,你可以使用mmap模块对文件进行内存映射。
f = open("yourfile.pgm", "rb+")
map = mmap.mmap(f.fileno(), 0)
map[1] = "5"
map.close()
答案 2 :(得分:1)
在C:
FILE* f = fopen("file.txt", "r+b");
fputs("P5", f);
fclose(f);
几乎任何语言都是相同的程序(open-as-binary / write / close)。
最重要的是:首先,备份所有内容。
编辑:我删除了fseek,因为魔术字符串位于文件的开头,这是fopen(..., "r+b")
定位文件指针的位置。
答案 3 :(得分:0)
如果你知道它在哪里,你可以读取前x个字节然后编辑字节,然后回写。
答案 4 :(得分:0)
嗯,当然你必须在修改文件后保存文件,但我不明白为什么你认为你必须重写每一个字节。