使用python重命名LAS文件

时间:2014-08-28 20:28:47

标签: python

我有一堆LAS文件已经提供了不同的命名约定。我想将文件重命名为具有相同的统一命名 - 基于每个tile质心的东坐标和北坐标。我已经生成了一个包含旧名称和新名称的文本文件,并且我正在尝试拼凑一个python脚本 - 但是我遇到了这个错误

回溯(最近一次调用最后一次):文件" C:\ LASTools \ Test \ ReName_Files.py",第64行,in newName = newList [indexOldName] NameError:name' indexOldName&#39 ;未定义

这里的脚本......我是python的新手,所以这可能需要我几个小时的研究和反复试验(它已经有了)......

import os

folder = "C:\Test\"

lookupTable = open(folder + "LookupTable.txt")

tableList = lookupTable.readlines() lookupTable.close()

old = "TIFF" new = "TILE"

newTable = [] for line in tableList: newLine = line.strip()
newerLine = newLine.strip(",")
newestLine = newerLine.strip("'")
almostFinalLine = newestLine.replace('"',"")
finalLine = almostFinalLine.split(",") newTable.append(finalLine)

header = newTable[0] 
indexOld = header.index(old) - 1 
indexNew = header.index(new) - 1

oldList = [] 
newList = [] 
for item in newTable: 
if item != newTable[0]: 
valueOld = item[indexOld] 
valueNew = item[indexNew] 
oldList.append(valueOld) 
newList.append(valueNew)

for file in os.listdir(folder): 
nameAndExt = os.path.splitext(file) 
oldName = nameAndExt[0] 
extension = nameAndExt[1] 


if oldName in oldList: 
indexOldName = oldList.index(oldName)

newName = newList[indexOldName]

os.rename(folder + oldName + extension, folder + newName + extension)

1 个答案:

答案 0 :(得分:1)

除了您的代码没有正确格式化和缩进之外,解释器在行

处挣扎
newName = newList[indexOldName]

变量indexOldName仅在事先oldName in oldList为真时定义。否则,它未被分配,您无法使用它来索引newList

因此,如果newName中没有oldName,那么可能只知道oldList应该是什么。


修改

要使用查找表重命名多个文件,以下方法就足够了:

import os

with open('lookup.txt') as f:
    table = f.read().strip().split('\n')

for line in table:
    names = line.split()
    os.rename(names[0], names[1])

说明:

  • 要阅读文件,您应使用with open(...) as模式。这可确保在离开此范围后关闭文件。
  • 要立即阅读整个文件,您可以使用read()
  • 函数strip()会删除尾随换行符(如果有)。
  • 最后,文件内容为split为单行。
  • for循环遍历所有行。
  • 单行split分为两部分。请注意,默认情况下split将字符串拆分为空格。如果您的文件名包含空格,则需要稍微修改此方法。
  • 现在我们可以rename旧文件names[0]names[1]