python - 替换Python目录中文本文件中的值

标签 python file text replace directory

我有一些 tif 图像及其相应的标题,均为 tfw 格式。与任何其他图像标题一样,它包括:x 和 y 方向上的像素大小、左上角的旋转和坐标。我想更改这些文件中第一行和第四行的像素大小。我不知道如何读取 tfw 格式。所以首先我将扩展名更改为 txt,现在尝试执行下一步。

我编写了以下脚本来读取和替换 txt 文件中的值。它适用于一个文件,但不适用于文件夹中的所有文件。如果有人能帮助我,我将不胜感激。

第一部分是更改 header 中的值的函数,第二部分代码将应用于所有文件。

#******************The file EditHeader2*********
def edit(infile, outfile):
    for line in infile:
       outfile.write(line.replace('0.2', '1.6'))
    infile.close()
    outfile.close()
    return outfile

#****************** call the function************************

import os, os.path, EditHeader2

folder1= 'E:/.../edited headers'
folder2= 'E:/.../edited headers/1'


for filename in os.listdir(folder1):
   infilename = os.path.join(folder1, filename)
   if not os.path.isfile(infilename): continue
   base, extension = os.path.splitext(filename)
   if os.path.splitext(filename)[1] == '.txt':        
       infile = open(infilename, 'r')
       outfile = open(os.path.join(folder2, '{}'.format(base, extension)), 'w')
       EditHeader2.edit(infile, outfile)

最佳答案

我保留 EditHeader2 模块不变。

主文件中的这段代码对我有用,即使有多个文件也是如此。

import os, os.path, EditHeader2

folder1 = 'editedheaders'
folder2 = 'editedheaders/1'

extensions = ('.txt', '.tfw', 'your extensions here ...')

for filename in os.listdir(folder1):
    infilename = os.path.join(folder1, filename)
    if not os.path.isfile(infilename): continue
    base, extension = os.path.splitext(filename)
    if os.path.splitext(filename)[1] in extensions:
        infile = open(infilename, 'r')
        outfile = open(os.path.join(folder2, '{}'.format(base, extension)), 'w')
        EditHeader2.edit(infile, outfile)

所以我几乎没有改变任何东西。也许缩进仍然存在问题(有些行有 3 个空格,有些有 4 个……)。

关于python - 替换Python目录中文本文件中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17024624/

相关文章:

python - 导入错误 : PyCapsule_Import could not import module "pyexpat"

c++ - 缓冲区如何知道在刷新操作期间要从外部文件传输多少个字符?

python - 使用 Keras 对 3 类进行图像分类仅返回一个值,而不是 1 X 3 数组

python不和谐机器人事件不起作用

java - 如何导出我的java程序并在其他计算机上打开它? (使用Eclipse)

c++ - fstream 保存文件和文件系统交叉链接的文件

c++ - 将源代码行与行之间的文本关联起来——太脆弱了

google-chrome - 如何从扩展程序中的 Chrome 浏览器中打开的 PDF 中获取选定的文本

java - 突出显示 JComboBox 中的文本,然后在用户输入内容时将其删除

python - 如何在python shell中导入virtualenv中的包