Python 代码中断迭代-仅打印第一项

Python 代码中断迭代-仅打印第一项,python,Python,我在一个名为20012002200320042005的目录中有文件夹。但是,当我在batchno中的“for batch”中遍历它们时: 打印(批)”它只打印第一个。如果我打印参数“Batchno”,它将显示所有文件夹。是不是有什么东西打破了我的循环?我读到一个返回可以打破你的循环,不确定“returnfilename”是否会这样做 def getcoafilepath(批号,pdkey): 对于pdkey中的日期: 日期=日期 对于批次号中的批次: 打印(批) filepath=f'\\\te

我在一个名为20012002200320042005的目录中有文件夹。但是,当我在batchno中的“for batch”中遍历它们时: 打印(批)”它只打印第一个。如果我打印参数“Batchno”,它将显示所有文件夹。是不是有什么东西打破了我的循环?我读到一个返回可以打破你的循环,不确定“returnfilename”是否会这样做

def getcoafilepath(批号,pdkey):
对于pdkey中的日期:
日期=日期
对于批次号中的批次:
打印(批)
filepath=f'\\\test/User/000/000/{date}/IMGCD/{batch}/'
abspth=os.path.abspath(文件路径)
对于os.listdir(文件路径)中的行:
打印(空+行“\\”+行)
logging.info(abspth+“\\”+行)
返回文件路径
makePdf(文件路径,r'C:\Users\TEST\COA\misc.fof')
def makePdf(文件路径,SaveToDir):
chdir(文件路径)
尝试:
对于os.listdir(os.getcwd())中的j:
chdir(文件路径)
fname,fext=os.path.splitext(j)
newfilename=fname+“.pdf”
im=Image.open(fname+fext)
os.chdir(SaveToDir)
保存(新文件名,“PDF”,分辨率=100.0)
除Image.UnidentifiedImageError外:
打印(f“{fname+fext}已找到。由于此库无法打开.db文件,因此跳过UnidentifiedImageError错误”
f“并将其转换为pdf。”)
makePdf(文件路径,r'C:\Users\TEST\COA\misc.fof')
filepath=getcoafilepath(x1,x5)
输出:

 2001
预期产出:

2001,2002,2003,2004,2005

绝对是!它在for循环的第一次迭代结束时击中了您的返回


如果我正在正确解释您试图执行的操作,您可以简单地删除返回,您的代码应该运行良好

绝对正确!它在for循环的第一次迭代结束时击中了您的返回


如果我正在正确解释您试图执行的操作,您可以简单地删除返回,并且您的代码应该运行良好

是的,返回将结束循环的执行。 尝试累积结果值,并在的
操作完成后一起返回

使用列表累积值的示例

filepaths = [] # Create an empty list
for batch in batchno:
    print(batch)
    filepath = f'\\\test/User/000/000/{date}/IMGCD/{batch}/'
    abspth = os.path.abspath(filepath)
    for row in os.listdir(filepath):
        print(abspth+"\\"+row)
        logging.info(abspth+"\\"+row)

    filepaths.append(filepath) # Accumulate values here

return filepaths # Return the list once completed the loop
编辑:

如果只需要这些值来调用
makePdf
函数,也可以直接在循环内调用函数,而不返回任何内容

for batch in batchno:
    print(batch)
    filepath = f'\\\test/User/000/000/{date}/IMGCD/{batch}/'
    abspth = os.path.abspath(filepath)
    for row in os.listdir(filepath):
        print(abspth+"\\"+row)
        logging.info(abspth+"\\"+row)

    makePdf(filepath, r'C:\Users\TEST\COA\misc.fof')

是的,返回将结束循环的执行。 尝试累积结果值,并在
操作完成后一起返回

使用列表累积值的示例

filepaths = [] # Create an empty list
for batch in batchno:
    print(batch)
    filepath = f'\\\test/User/000/000/{date}/IMGCD/{batch}/'
    abspth = os.path.abspath(filepath)
    for row in os.listdir(filepath):
        print(abspth+"\\"+row)
        logging.info(abspth+"\\"+row)

    filepaths.append(filepath) # Accumulate values here

return filepaths # Return the list once completed the loop
编辑:

如果只需要这些值来调用
makePdf
函数,也可以直接在循环内调用函数,而不返回任何内容

for batch in batchno:
    print(batch)
    filepath = f'\\\test/User/000/000/{date}/IMGCD/{batch}/'
    abspth = os.path.abspath(filepath)
    for row in os.listdir(filepath):
        print(abspth+"\\"+row)
        logging.info(abspth+"\\"+row)

    makePdf(filepath, r'C:\Users\TEST\COA\misc.fof')

您在for循环中使用了“return”,因此当第一次迭代结束时,它将从函数中出来

您在for循环中使用了“return”,因此当第一次迭代结束时,它将从函数中出来

我是否必须将它更多地返回到左侧?我需要这个filepath变量在另一个函数中使用。@Ben21-否,因为您是从定义该变量的函数中调用另一个函数的。我是否需要将它返回到更左侧?我需要该filepath变量在另一个函数中使用。@Ben21-否,因为您是从定义该变量的函数中调用另一个函数的