为了账号安全,请及时绑定邮箱和手机立即绑定

如何更改 ASCII 文件的单元大小、xllcorner 和 yllcorner?

如何更改 ASCII 文件的单元大小、xllcorner 和 yllcorner?

梵蒂冈之花 2022-07-05 19:34:48
我需要将多个 ASCII 文件的cellsize和xllcorner转换为. 我一直在尝试在 ASCII 文件的标题中覆盖它们,就像使用常规文本文件一样,如下所示:yllcornermkmfor rw_file in os.listdir(r"C:\Users\Marie\Test"):    rw_file_path = os.path.join(r"C:\Users\Marie\Test", rw_file)    with open(rw_file_path, 'r+') as f:        # skip the first two lines of the header        f.readline()        f.readline()        # convert the values of cellsize, xllcorner and yllcorner into km        line3 = f.readline()        header_x, xllcorner = line3.split()        xllcorner_new = int(xllcorner) / 1000        f.seek(2)        f.write(re.sub(header_x, xllcorner_new)) #third argument??        line4 = f.readline()        header_y, yllcorner = line4.split()        yllcorner_new = int(yllcorner) / 1000        f.seek(3)        f.write(re.sub(header_y, yllcorner_new))        line5 = f.readline()        header_size, cellsize = line5.split()        cellsize_new = int(cellsize) / 1000        f.seek(4)        f.write(re.sub(header_size, cellsize_new))但是当然函数 re.sub 需要三个参数。我不知道该怎么做。我仍然是初学者,所以我确信有一个简单的方法,但我找不到它。我可以以某种方式覆盖标题中的这些行,还是有其他方法?
查看完整描述

1 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

您应该写入一个新文件(然后可能将该新文件复制到旧文件上),而不是就地更改旧文件。由于您写入文件的新值与旧值的字节大小不同,因此就地更改它会产生垃圾内容。

至于您关于 的具体问题re.sub,您可以在此处找到其文档:https ://docs.python.org/3/library/re.html#re.sub 。它要求将字符串更改为其第三个参数。


查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信