为了账号安全,请及时绑定邮箱和手机立即绑定

退出后如何访问“while True: try/break”循环内生成的局部变量?

退出后如何访问“while True: try/break”循环内生成的局部变量?

慕无忌1623718 2023-07-05 16:31:06
我编写了一个模块,它获取目录中的所有 TIFF 图像,对每个图像文件中的所有帧进行平均,并将平均图像保存到由以下指定的自动生成的子目录中outputPath:def average_tiff_frames(inputPath):    '''    This function opens all TIFF image files in a directory, averages over all frames within each TIFF file,    and saves the averaged images to a subdirectory.        Parameters    ----------    inputPath : string        Absolute path to the raw TIFF files    '''    import datetime    import os        import numpy as np    from PIL import Image            # Read image file names, create output folder    while True:        try:            inputPath = os.path.join(inputPath, '')    # Add trailing slash or backslash to the input path if missing            filenames = [filename for filename in os.listdir(inputPath)                            if filename.endswith(('.tif', '.TIF', '.tiff', '.TIFF'))                            and not filename.endswith(('_avg.tif'))]            outputPath = os.path.join(inputPath, datetime.datetime.now().strftime('%Y%m%dT%H%M%S'), '')            os.mkdir(outputPath)            break        except FileNotFoundError:            print('TIFF file not found - or - frames in TIFF file already averaged (file name ends with "_avg.tif")')    # Open image files, average over all frames, save averaged image files    for filename in filenames:        img = Image.open(inputPath + filename)        width, height = img.size        NFrames = img.n_frames        imgArray = np.zeros((height, width))    # Ordering of axes: img.size returns (width, height), np.zeros takes (rows, columns)        for i in range(NFrames):            img.seek(i)            imgArray += np.array(img)            i += 1        imgArrayAverage = imgArray / NFrames        imgAverage = Image.fromarray(imgArrayAverage)        imgAverage.save(outputPath + filename.rsplit('.')[0] + '_avg' + '.tif')        img.close()    return outputPath这里有什么问题吗?我的第一个想法是,它outputPath是循环本地的while True: try,并且在 后被破坏break,所以我outputPath = ''在循环之前实例化了一个空字符串,但这没有帮助。
查看完整描述

1 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

您并不是试图在循环之外访问变量,而是试图完全在方法之外访问它。该方法返回您要查找的值,因此将该值设置为变量:


outputPath = average_tiff_frames(inputPath)


print(outputPath)

或者直接打印:


print(average_tiff_frames(inputPath))


查看完整回答
反对 回复 2023-07-05
  • 1 回答
  • 0 关注
  • 85 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信