使用python重命名LAS文件

使用python重命名LAS文件,python,Python,我有一堆LAS文件,它们以不同的命名约定交付。我想根据每个瓷砖质心的东距和北距坐标,将所有文件重命名为具有相同的统一命名。我已经生成了一个包含新旧名称的文本文件,并试图拼凑一个python脚本,但遇到了这个错误 回溯(最近一次调用):文件“C:\LASTools\Test\ReName\u Files.py”,第64行,在newName=newList[indexOldName]name中错误:未定义名称“indexOldName” 这是剧本。。。我对python非常陌生,因此这可能需要我数小时

我有一堆LAS文件,它们以不同的命名约定交付。我想根据每个瓷砖质心的东距和北距坐标,将所有文件重命名为具有相同的统一命名。我已经生成了一个包含新旧名称的文本文件,并试图拼凑一个python脚本,但遇到了这个错误

回溯(最近一次调用):文件“C:\LASTools\Test\ReName\u Files.py”,第64行,在newName=newList[indexOldName]name中错误:未定义名称“indexOldName”

这是剧本。。。我对python非常陌生,因此这可能需要我数小时的研究和反复试验(它已经有了)


除了您的代码没有正确格式化和缩进之外,解释器在这行代码中也会遇到困难

newName=newList[indexOldName]
只有在oldList中的
oldName事先为true时,才定义变量
indexOldName
。否则它不会被分配,您不能使用它来索引
newList

因此,如果
oldName
不在
oldList
中,可能只有您知道
newName
应该是什么


编辑:

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

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])
说明:

  • 要读取文件,应使用带有open(…)as的
    模式。这样可以确保文件在离开此作用域后关闭
  • 要一次读取整个文件,可以使用
    read()
  • 函数
    strip()
    将删除尾随换行符(如果有)
  • 最后,将文件内容
    拆分为单行
  • for
    循环迭代所有行
  • 一行代码被拆分为两部分。请注意,默认情况下,
    split
    在空白处拆分字符串。如果文件名包含空格,则需要稍微修改此方法
  • 现在,我们可以
    将旧文件
    名称[0]
    重命名为
    名称[1]

您有一个转义的
文件夹中,因此您的整个代码是一个字符串。您还有几个其他语法错误-请确保此处的代码与您正在运行的代码相匹配。请修复代码,使其每行有一个命令,并修复缩进,这在Python中非常重要。@jonrsharpe原始文字仍然无法修复它-您不能有“\”是字符串的最后一个字符。@MattDMo说得很好。我正在使用文件的子集(1到20),我可以让脚本使用新的命名约定正确地重命名文件20,但它不会循环。我不确定应该使用什么函数来强制脚本循环并重命名文本文件列表中的每个文件。@jkoro:用如此糟糕的格式调试和改进代码确实很困难。但无论如何,从头开始编写这样一个小工具可能更容易。所以我编辑了我的答案,并提供了一个简短的算法来解决你的问题。(请研究代码和所有相关功能,必要时进行修改。)
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])