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

时间:2013-06-10 13:06:35

标签: python file text replace directory

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

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

第一部分是改变标题中值的功能,第二部分代码部分适用于所有文件。

#******************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)

1 个答案:

答案 0 :(得分:1)

我保持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 ......)。