萌新又来求助了,代码执行后结果不稳定,我要的是第一种,但是是不是会第二种字典w...
class AQ_INFO():def __init__(self):
#调用EEP_INFO的方法
EEP_INFO.__init__(self)
self.factoryroot_dir = self.param_dict.get('FACTORY_PACKAGE')
def get_aq_path(self):
#通过关键字符串定位aq路径
search_strings = []
search_strings.extend()
#print("确认aq路径需要的字符串", search_strings)
for dp, dn, filenames in os.walk(self.code_dir):
#确认aq目录,判断当前目录是否包含了search_strings中的所有字符串
if all(path in dp or path in filenames for path in search_strings):
self.aq_path = dp
#print("data:aq路径为:" + aq_path)
return self.aq_path
def get_aq_file(self):
#通过PARAM_INFO类的pack_data方法获取要处理的aq文件
files = 'aq_data'
self.pickle_info = PARAM_INFO.pickle_data(curr_dir,files)
#print(self.pickle_info)
#使用列表推导式和集合(set)来拿出元组中的前面一个元素,并去重拼接得到带路径的文件名
self.aq_file_list = list(set( for tup in self.pickle_info]))
self.aq_path_list =
return self.aq_path_list
def get_aq_data(self):
#对于给定的元组列表,可以使用列表推导式遍历每个元组,并取出其中指定位置的元素
keys = for key in self.pickle_info]
#取出元素后,可以对列表去重并排序,以方便后续操作。可以使用 set() 函数将列表转换为集合,并使用 sorted() 函数对集合中的元素进行排序
search_keys = sorted(set(keys))
#获取文件名
names = for file in self.pickle_info]
search_files = sorted(set())
# 文件列表
file_list = self.aq_path_list
# key列表
key_list = search_keys
# 文件名列表
filename_list = search_files
# 文件名和key对应列表
filename_key_list = self.pickle_info
# 定义一个字典来存储key和对应的value
aq_data_dict = {}
# 遍历文件名和key对应列表
for filename_key in filename_key_list:
# 获取文件名和key
filename, key = filename_key
# 判断文件名是否在文件名列表中
if filename in filename_list:
# 获取文件在文件列表中的索引
index = filename_list.index(filename)
# 打开文件并查找key对应的值
with open(file_list,'r',encoding='utf-8') as f:
for line in f:
line = line.strip()#去掉行末的换行符
# 如果该行以key开头,则以等号分隔,取第二个部分作为key对应的值
if line.startswith(key):
value = line.split('=').split(';').strip()
print(f"{filename}:{key} = {value}")
#将key和value存储到字典
aq_data_dict = value
#注意:要写入excel的aq数据字典
return aq_data_dict
result = AQ_INFO()
print(result.get_aq_path())
print(result.get_aq_file())
print(result.get_aq_data())
代码结果有两种情况
aq/25_50A23_N012301-008650-001
['aq/25_50A23_N012301-008650-001/amp.ini', 'aq/25_50A23_N012301-008650-001/panel_audio.ini']
amp.ini:AmpBinPath = /factory/aq/25_50A23_N012301-008650-001/AMP_RT9120.bin
panel_audio.ini:cSupportCareSoundMode = N
panel_audio.ini:isSupportAudioExtraGain = Y
{'amp.ini:AmpBinPath': '/factory/aq/25_50A23_N012301-008650-001/AMP_RT9120.bin', 'panel_audio.ini:cSupportCareSoundMode': 'N', 'panel_audio.ini:isSupportAudioExtraGain': 'Y'}
aq/25_50A23_N012301-008650-001
['aq/25_50A23_N012301-008650-001/amp.ini', 'aq/25_50A23_N012301-008650-001/panel_audio.ini']
amp.ini:AmpBinPath = /factory/aq/25_50A23_N012301-008650-001/AMP_RT9120.bin
panel_audio.ini:cSupportCareSoundMode = N
panel_audio.ini:isSupportAudioExtraGain = Y
{}
你好!从你提供的代码和输出结果来看,似乎在某些情况下,aq_data_dict 字典为空。
这可能是由于在某些情况下,if filename in filename_list: 这个条件没有满足,导致没有找到正确的文件名。
你可以在代码中添加一些打印语句来调试,看看为什么在某些情况下这个条件没有被满足。例如:
for filename_key in filename_key_list:
filename, key = filename_key
if filename in filename_list:
# ...
else:
print(f"{filename} not found in filename_list")
这样你可以看到哪些文件名没有在 filename_list 中找到。这可能是由于在构造 filename_list 时出现了问题。
另外,你也可以尝试打印 filename_list 和 filename_key_list,以便更好地理解它们的结构。
print("filename_list:", filename_list)
print("filename_key_list:", filename_key_list)
希望这些建议对你有所帮助!如果问题依然存在,请随时提问。 isdkz 发表于 2023-4-7 10:35
你好!从你提供的代码和输出结果来看,似乎在某些情况下,aq_data_dict 字典为空。
这可能是由于在某些 ...
两个结果打印出来一样的额,除了正常输出的外,其他一毛一样
正常:
aq/25_50A23_N012301-008650-001
['aq/25_50A23_N012301-008650-001/amp.ini', 'aq/25_50A23_N012301-008650-001/panel_audio.ini']
amp.ini:AmpBinPath = /factory/atv/panel/7T862_A23/aq/25_50A23_N012301-008650-001/AMP_RT9120.bin;
lyp1-filename_list: ['amp.ini', 'panel_audio.ini']
lyp2-filename_key_list: [('amp.ini', 'AmpBinPath'), ('panel_audio.ini', 'cSupportCareSoundMode'), ('panel_audio.ini', 'isSupportAudioExtraGain')]
lyp3-filename amp.ini
lyp4-key AmpBinPath
panel_audio.ini:cSupportCareSoundMode = N;
lyp1-filename_list: ['amp.ini', 'panel_audio.ini']
lyp2-filename_key_list: [('amp.ini', 'AmpBinPath'), ('panel_audio.ini', 'cSupportCareSoundMode'), ('panel_audio.ini', 'isSupportAudioExtraGain')]
lyp3-filename panel_audio.ini
lyp4-key cSupportCareSoundMode
panel_audio.ini:isSupportAudioExtraGain = Y;
lyp1-filename_list: ['amp.ini', 'panel_audio.ini']
lyp2-filename_key_list: [('amp.ini', 'AmpBinPath'), ('panel_audio.ini', 'cSupportCareSoundMode'), ('panel_audio.ini', 'isSupportAudioExtraGain')]
lyp3-filename panel_audio.ini
lyp4-key isSupportAudioExtraGain
{'amp.ini:AmpBinPath': '/factory/atv/panel/7T862_A23/aq/25_50A23_N012301-008650-001/AMP_RT9120.bin;', 'panel_audio.ini:cSupportCareSoundMode': 'N;', 'panel_audio.ini:isSupportAudioExtraGain': 'Y;'}
异常:
aq/25_50A23_N012301-008650-001
['aq/25_50A23_N012301-008650-001/panel_audio.ini', 'aq/25_50A23_N012301-008650-001/amp.ini']
lyp1-filename_list: ['amp.ini', 'panel_audio.ini']
lyp2-filename_key_list: [('amp.ini', 'AmpBinPath'), ('panel_audio.ini', 'cSupportCareSoundMode'), ('panel_audio.ini', 'isSupportAudioExtraGain')]
lyp3-filename amp.ini
lyp4-key AmpBinPath
lyp1-filename_list: ['amp.ini', 'panel_audio.ini']
lyp2-filename_key_list: [('amp.ini', 'AmpBinPath'), ('panel_audio.ini', 'cSupportCareSoundMode'), ('panel_audio.ini', 'isSupportAudioExtraGain')]
lyp3-filename panel_audio.ini
lyp4-key cSupportCareSoundMode
lyp1-filename_list: ['amp.ini', 'panel_audio.ini']
lyp2-filename_key_list: [('amp.ini', 'AmpBinPath'), ('panel_audio.ini', 'cSupportCareSoundMode'), ('panel_audio.ini', 'isSupportAudioExtraGain')]
lyp3-filename panel_audio.ini
lyp4-key isSupportAudioExtraGain
{} aq_data_dict = {}
# 遍历文件名和key对应列表
for filename_key in filename_key_list:
# 获取文件名和key
filename, key = filename_key
# 判断文件名是否在文件名列表中
if filename in filename_list:
# 获取文件在文件列表中的索引
index = filename_list.index(filename)
#print("lyp5-index",index)
# 打开文件并查找key对应的值
# 遍历所有文件,查找是否包含对应的key
for i in range(len(file_list)):
filename = os.path.basename(file_list)
if filename in filename_list:
with open(file_list, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
for key in key_list:
if line.startswith(key):
value = line.split('=').split(';').strip()
aq_data_dict = value
break
页:
[1]