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