在整理数据时,我的.bmp图片和.json文件需要一一对应用来研究,但是文件夹中有的图片丢失了有的文件丢失了,这些不对应的数据无法进行研究,我们需要找到并进行处理。在面对上万数据时我们人为是很难找出来的,所以我们可以用以下方法对废弃数据进行移出或者删除。
一一对应:我的json文件是根据bmp图片生成的,他们的文件名是一样的。
方法一:移出
1.移出多余数据至新文件夹
文件夹路径:F:\代码测试\文件夹一
目标文件夹路径:F:\代码测试\多余数据文件夹
2.代码实现
import os
import shutil
def check_and_move_mismatched_files(root_folder, output_folder):
bmp_files = set()
json_files = set()
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 首先将文件名保存到集合中
for root, dirs, files in os.walk(root_folder):
for file in files:
filename, file_extension = os.path.splitext(file)
if file_extension == '.bmp':
bmp_files.add(filename)
elif file_extension == '.json':
json_files.add(filename)
# 找出无法对应的文件名并输出
mismatched_files = bmp_files.symmetric_difference(json_files)
if mismatched_files:
print("Mismatched files:")
for filename in mismatched_files:
print(filename)
# 将无法对应的文件移动到输出文件夹中
for filename in mismatched_files:
bmp_filepath = os.path.join(root_folder, f"{filename}.bmp")
json_filepath = os.path.join(root_folder, f"{filename}.json")
if os.path.exists(bmp_filepath):
shutil.move(bmp_filepath, os.path.join(output_folder, f"{filename}.bmp"))
print(f"Moved: {bmp_filepath} to {output_folder}")
if os.path.exists(json_filepath):
shutil.move(json_filepath, os.path.join(output_folder, f"{filename}.json"))
print(f"Moved: {json_filepath} to {output_folder}")
else:
print("All files are matched.")
# 设置根文件夹路径和输出文件夹路径
root_folder = 'F:\代码测试\文件夹一' # 替换为您的根文件夹路径
output_folder = 'F:\代码测试\多余数据文件夹' # 替换为您的输出文件夹路径
# 调用检查并移动函数
check_and_move_mismatched_files(root_folder, output_folder)
3.运行结果
我们可以看到源文件夹中.bmp图片和.json文件一一对应用,而目标文件夹中是移出的多余数据
方法二:删除
1.删除多余数据
文件夹路径:F:\代码测试\文件夹一
2.代码实现
import os
def check_and_delete_mismatched_files(root_folder):
bmp_files = set()
json_files = set()
# 首先将文件名保存到集合中
for root, dirs, files in os.walk(root_folder):
for file in files:
filename, file_extension = os.path.splitext(file)
if file_extension == '.bmp':
bmp_files.add(filename)
elif file_extension == '.json':
json_files.add(filename)
# 找出无法对应的文件名并输出
mismatched_files = bmp_files.symmetric_difference(json_files)
if mismatched_files:
print("Mismatched files:")
for filename in mismatched_files:
print(filename)
# 删除无法对应的文件
for filename in mismatched_files:
bmp_filepath = os.path.join(root_folder, f"{filename}.bmp")
json_filepath = os.path.join(root_folder, f"{filename}.json")
if os.path.exists(bmp_filepath):
os.remove(bmp_filepath)
print(f"Deleted: {bmp_filepath}")
if os.path.exists(json_filepath):
os.remove(json_filepath)
print(f"Deleted: {json_filepath}")
else:
print("All files are matched.")
# 设置根文件夹路径
root_folder = 'F:\代码测试\文件夹一' # 替换为您的根文件夹路径
# 调用检查并删除函数
check_and_delete_mismatched_files(root_folder)
3.运行结果
通过代码我们可以直接将多余数据删除掉