import json import os with open('file_1.json', 'r',encoding='utf-8') as f: data = json.load(f) # print(data) path=r"C:\Users\admin\Desktop\weapon_all_name" image_folder = path image_files = [f for f in os.listdir(image_folder) if os.path.isfile(os.path.join(image_folder, f))] matched_files = [] for file in image_files: filename = os.path.splitext(file)[1] if filename in data: matched_files.append(file) for file in matched_files: print(file)
时间: 2023-12-13 17:03:01 浏览: 523
您的代码段看起来很好!这段代码首先使用`json`模块加载名为`file_1.json`的JSON文件中的数据,并将其存储在变量`data`中。
然后,您定义了文件夹路径`path`,并将其赋值给变量`image_folder`。接下来,使用列表推导式和`os.listdir()`函数获取指定文件夹中的所有文件的名称,并将它们存储在`image_files`列表中。
接下来,代码使用循环遍历`image_files`列表中的每个文件,使用`os.path.splitext()`函数获取文件的扩展名,并将其存储在变量`filename`中。然后,检查`filename`是否存在于`data`字典中,如果存在,则将该文件名添加到`matched_files`列表中。
最后,通过循环遍历`matched_files`列表,并打印每个文件名。
如果您有其他问题,请随时提问!
相关问题
108至116行代码为:Data_Path = r'G:\项目\RCM\RCM自\datafile\工单.json' Data_Pathout = r'G:\项目\RCM\RCM自\datafile\wangdatong.json' # ----------读取数据 with open(Data_Path, 'r', encoding='utf8') as load_f: Data_in = json.load(load_f) Data_in = json.dumps(Data_in, ensure_ascii=False) # ----------故障模式概率等级\故障影响等级\CA FMECA_out = FMECA(Data_in)
根据你提供的代码,我注意到在读取`Data_Path`指向的JSON文件后,你将其转换为字符串类型。然后你将这个字符串类型的数据传递给`FMECA`函数进行处理。
问题可能出现在这个转换过程中。将JSON字符串转换为字典之后,你应该直接使用字典类型的`Data_in`,而不是再次将其转换为字符串。
请尝试使用下面的修正后的代码:
```python
import json
Data_Path = r'G:\项目\RCM\RCM自\datafile\工单.json'
Data_Pathout = r'G:\项目\RCM\RCM自\datafile\wangdatong.json'
# 读取数据
with open(Data_Path, 'r', encoding='utf8') as load_f:
Data_in = json.load(load_f)
# 故障模式概率等级\故障影响等级\CA
FMECA_out = FMECA(Data_in)
```
这样,`Data_in`将是一个字典类型的变量,你可以将其直接传递给`FMECA`函数。
如果问题仍然存在,请提供更多的代码和错误信息,以便我能够更好地帮助你解决问题。
import json import os #指定原始数据集和目标路径 json_folder_path = "D:/python/pycharm/pycharm_date/Oracle/OracleCS/ce_shi_label" txt_folder_path = "D:/python/pycharm/pycharm_date/Oracle/OracleCS/labels" #获取所有json文件的路径 json_files = [os.path.join(json_folder_path, f) for f in os.listdir(json_folder_path) if f.endswith('.json')] for json_file in json_files:#打开json文件 with open(json_file, 'r', encoding='utf-8') as f:data = json.load(f) image_name = data["img_name"] + ".jpg" label_name = data["img_name"] boxes = data["ann"] #将每个矩形框转换为txt格式 txt_data = "" txt_line_1 = f"{label_name}\n" for box in boxes: x1, y1,x2, y2,class_id = str(box[0]), str(box[1]), str(box[2]),str(box[3]),str(box[4]) txt_line =f"{x1} {y1} {x2} {y2} {class_id}\n" txt_data += txt_line #写入txt文件 txt_file = os.path.join(txt_folder_path, image_name.replace(".jpg", ".txt")) with open(txt_file, 'w', encoding='utf-8') as f:f.write(txt_line_1 + txt_data)将其中json文件的名称统一放在一一个新的txt文件中
可以在循环外部先创建一个空的列表,然后在循环中每次将json文件的名称添加到列表中。循环结束后再将列表中的元素写入到一个新的txt文件中即可。
示例代码如下:
```python
import json
import os
# 指定原始数据集和目标路径
json_folder_path = "D:/python/pycharm/pycharm_date/Oracle/OracleCS/ce_shi_label"
txt_folder_path = "D:/python/pycharm/pycharm_date/Oracle/OracleCS/labels"
# 获取所有json文件的路径
json_files = [os.path.join(json_folder_path, f) for f in os.listdir(json_folder_path) if f.endswith('.json')]
# 创建空的列表
json_names = []
for json_file in json_files:
# 打开json文件
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
image_name = data["img_name"] + ".jpg"
label_name = data["img_name"]
boxes = data["ann"]
# 将json文件名称添加到列表中
json_names.append(label_name)
# 将每个矩形框转换为txt格式
txt_data = ""
txt_line_1 = f"{label_name}\n"
for box in boxes:
x1, y1,x2, y2,class_id = str(box[0]), str(box[1]), str(box[2]),str(box[3]),str(box[4])
txt_line =f"{x1} {y1} {x2} {y2} {class_id}\n"
txt_data += txt_line
# 写入txt文件
txt_file = os.path.join(txt_folder_path, image_name.replace(".jpg", ".txt"))
with open(txt_file, 'w', encoding='utf-8') as f:
f.write(txt_line_1 + txt_data)
# 将json文件名称写入新的txt文件中
json_names_file = os.path.join(txt_folder_path, "json_names.txt")
with open(json_names_file, 'w', encoding='utf-8') as f:
for name in json_names:
f.write(name + "\n")
```
这样,就可以将所有json文件的名称统一放在一个新的txt文件中了。
阅读全文