在 python 中放置 break 和 return 语句
placement of break and return statements in python
我正在尝试编写一个函数,该函数 return 是在文件夹嵌套中找到的第一个文件的路径。到目前为止我所拥有的是:
def dicom_name(rootDir):
for dirName, subdirList, fileList in os.walk(rootDir):
for f in fileList:
print(dirName,f)
return(os.path.join(dirName,f))
break
现在如果我 运行 这个然后 运行
dcm=dicom_name("test_dir")
print(dcm)
我明白了"None"
我尝试了 return 和 break 语句的不同位置。做我想做的事情的正确方法是什么?
您不需要 break
。
您的函数总是在执行一次外线程后返回,即使在该迭代中没有找到文件。
删除 break
它将起作用。
例如,如果您只有一个文件 test_dir/a/b.txt
,
在外线的第一个 运行 中你有
dirName = test_dir
subdirList = ['a']
fileList = []
在第二个 运行:
dirName = test_dir/a
subdirList = []
fileList = ['b.txt']
所以你想继续,直到你在 fileList
变量中找到一些东西。
我正在尝试编写一个函数,该函数 return 是在文件夹嵌套中找到的第一个文件的路径。到目前为止我所拥有的是:
def dicom_name(rootDir):
for dirName, subdirList, fileList in os.walk(rootDir):
for f in fileList:
print(dirName,f)
return(os.path.join(dirName,f))
break
现在如果我 运行 这个然后 运行
dcm=dicom_name("test_dir")
print(dcm)
我明白了"None"
我尝试了 return 和 break 语句的不同位置。做我想做的事情的正确方法是什么?
您不需要 break
。
您的函数总是在执行一次外线程后返回,即使在该迭代中没有找到文件。
删除 break
它将起作用。
例如,如果您只有一个文件 test_dir/a/b.txt
,
在外线的第一个 运行 中你有
dirName = test_dir
subdirList = ['a']
fileList = []
在第二个 运行:
dirName = test_dir/a
subdirList = []
fileList = ['b.txt']
所以你想继续,直到你在 fileList
变量中找到一些东西。