为多个具有相同扩展名的文件运行脚本。正在获取“UnboundLocalError”

2024-10-02 12:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图编写一个脚本,从扩展名为“.tp6”的目录中的多个文件中提取数据,最终我将用它们关联的文件名将它们写入csv,但我现在不着重于此

下面的代码适用于约50个文件,然后突然得到一个“UnboundLocalError”,其内容如下:

Traceback (most recent call last):

File "finder5.py", line 22, in module

uncovext(file)

文件“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)

有什么想法吗?谢谢大家!


Tags: 文件代码inpyimportforlineglob
1条回答
网友
1楼 · 发布于 2024-10-02 12:32:22

问题是,有时处理的文件没有以UNCONVOLVED INTEGRATED RADIANCE开头的行。outfloat变量永远不会被绑定,因此当uncovext中的for循环终止时,您的打印语句会失败,因为引用的变量不可用。下面的代码应该显示如何修复该问题

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()

相关问题 更多 >

    热门问题