我正在尝试编写一个脚本来从扩展名为“.tp6”的目录中的许多文件中提取数据 - 最终我要将它们写入带有相关文件名的csv但我是现在没有专注于此。
下面的代码适用于~50个文件,然后突然得到一个“UnboundLocalError”,内容如下:
追踪(最近一次呼叫最后一次):
文件“finder5.py”,第22行,在模块
中uncovext(文件)
文件“finder5.py”,第17行,在uncovext中
print('%。3f'%outfloat)
UnboundLocalError:赋值前引用的局部变量'outfloat'。
以下是代码:
import Tkinter as tk
import tkFileDialog
import os
import glob
#defines the working directory
root = tk.Tk()
root.withdraw()
dir_path = tkFileDialog.askdirectory()
os.chdir(dir_path)
def uncovext(file1):
for line in open(file1, 'r'):
if line.startswith(' UNCONVOLVED INTEGRATED RADIANCE'):
out = line[36:47]
outfloat = (float(out) * 10000)
print('%.3f' % outfloat)
print(file)
#for each file with ext ".tp6"
for file in glob.glob("*.tp6"):
uncovext(file)
有什么想法吗?谢谢!
答案 0 :(得分:1)
问题是您有时处理的文件没有以UNCONVOLVED INTEGRATED RADIANCE
开头的行。 outfloat
变量永远不会被绑定,因此当uncovext
中的for循环终止时,由于引用的变量不可用,因此print语句会失败。以下代码应显示如何解决问题。
import glob
import os
import Tkinter
import tkFileDialog
def main():
root = Tkinter.Tk()
root.withdraw()
dir_path = tkFileDialog.askdirectory()
os.chdir(dir_path)
for file_path in glob.glob('*.tp6'):
uncovext(file_path)
def uncovext(file_path):
for line in open(file_path):
if line.startswith(' UNCONVOLVED INTEGRATED RADIANCE'):
text = line[36:47]
number = float(text) * 10000
print('%.3f' % number)
print(file_path)
if __name__ == '__main__':
main()