【问题标题】:Replace the values in text files in a directory in Python替换Python目录中文本文件中的值
【发布时间】:2013-06-06 03:39:50
【问题描述】:

我有一些带有相应标题的 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)

【问题讨论】:

  • 多个文件到底有什么问题?其中一些没有转化吗?有什么错误吗?
  • 感谢您的编辑。好吧,当我应用主代码时,我收到了错误,invalid syntax。它引用最后一行 EditHeader2.edit(infile, outfile)
  • 你认为会是什么问题?
  • 最后一行的末尾缺少一个括号。我不认为是我删除了它。如果我没有缩进代码,它也会是无效的语法。
  • 更改文件的扩展名并不会神奇地将文件重新格式化为某种新格式。您现在拥有名为 something.txt 的文件,它们仍然是“tfw 格式的 tif 文件”。 (即重命名文件真的没有任何收获)。

标签: python file text replace directory


【解决方案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 个......)。

【讨论】:

  • :非常感谢您的热心帮助。我又试了一次,现在可以了。只是有一个问题,新创建的文件没有“txt”文件扩展名,尽管在 txt 文件中有识别。我该如何解决这个问题?
  • 更新了答案,允许您定义任意数量的文件扩展名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多