Python 使用os.walk()连接子目录
我无法访问Python 使用os.walk()连接子目录,python,python-3.x,Python,Python 3.x,我无法访问左列表和右列表来加入它们的路径,因为它们肯定超出了范围 谁能告诉我如何用更好的代码结构来解决这个问题吗?您可以在for之外初始化列表 with open('images.txt', 'w') as text_file: for folderName, subfolders, f in os.walk(root_folder): for subfolder in subfolders: if subfolder == 'image_02':
左列表
和右列表
来加入它们的路径,因为它们肯定超出了范围谁能告诉我如何用更好的代码结构来解决这个问题吗?您可以在for之外初始化列表
with open('images.txt', 'w') as text_file:
for folderName, subfolders, f in os.walk(root_folder):
for subfolder in subfolders:
if subfolder == 'image_02':
left_path = os.path.join(folderName, subfolder, 'data')
left_list = [f for f in sorted(os.listdir(left_path)) if
not f.startswith('.') and f.endswith('.png')]
elif subfolder == 'image_03':
right_path = os.path.join(folderName, subfolder, 'data')
right_list = [f for f in sorted(os.listdir(right_path)) if
not f.startswith('.') and f.endswith('.png')]
if len(left_list) != len(right_list):
print('ERROR: directory {} does not match with {}'.format(left_path, right_path))
continue
for left_file, right_file in zip(left_list, right_list):
text_file.write(
os.path.join(left_path, left_file) + " " + os.path.join(right_path, right_file) + "\n")
这将是一个更好的方式 您将使用新值覆盖列表,而旧值将在此处丢失。您不是每次都在if语句中覆盖列表吗?所以问题是您丢失了旧值?什么是
数据
只是目录结构中的一些文件<代码>数据只是该文件夹中的另一个目录,我们有图像子文件夹
将仅出现在第一个循环中。在随后的循环中它是空的。最好说明一下您的目录结构!
with open('images.txt', 'w') as text_file:
left_list = []
right_list = []
for folderName, subfolders, f in os.walk(root_folder):
for subfolder in subfolders:
if subfolder == 'image_02':
left_path = os.path.join(folderName, subfolder, 'data')
left_list = [f for f in sorted(os.listdir(left_path)) if
not f.startswith('.') and f.endswith('.png')]
elif subfolder == 'image_03':
right_path = os.path.join(folderName, subfolder, 'data')
right_list = [f for f in sorted(os.listdir(right_path)) if
not f.startswith('.') and f.endswith('.png')]
if len(left_list) != len(right_list):
print('ERROR: directory {} does not match with {}'.format(left_path, right_path))
continue
for left_file, right_file in zip(left_list, right_list):
text_file.write(
os.path.join(left_path, left_file) + " " + os.path.join(right_path, right_file) + "\n")
with open(dataset['destination'], 'w') as text_file:
left_list = []
right_list = []
for folderName, subfolders, f in os.walk(root_folder):
for subfolder in subfolders:
if subfolder == 'image_02':
left_path = os.path.join(folderName, subfolder, 'data')
for f in sorted(os.listdir(left_path)):
if not f.startswith('.') and f.endswith('.png'):
left_list.append(f)
elif subfolder == 'image_03':
right_path = os.path.join(folderName, subfolder, 'data')
for f in sorted(os.listdir(right_path)):
if not f.startswith('.') and f.endswith('.png'):
right_list.append(f)
if len(left_list) != len(right_list):
print('ERROR: directory {} does not match with {}'.format(left_path, right_path))
continue
for left_file, right_file in zip(left_list, right_list):
text_file.write(
os.path.join(left_path, left_file) + " " + os.path.join(right_path, right_file) + "\n")