fineconey 发表于 2023-11-6 18:04:44

函数不运行的问题。

代码如下:

import os

keyname = ['1树脂', '1.1树脂及基料', '1.1.01醇酸树脂', '1.1.02丙烯酸树脂', '1.1.03环氧树脂', '1.1.04聚酯树脂',
         '1.1.05聚氨酯树脂', '1.1.06有机硅树脂', '1.1.07氟树脂', '1.1.08混合型树脂', '1.1.09纤维素树脂',
         '1.1.10氯化聚烯烃', '1.1.11氨基树脂', '1.1.12异氰酸盐硬脂', '1.1.13三聚氰胺树脂', '1.1.14天然树脂',
         '1.1.15功能树脂', '1.1.16树脂原材料', '1.1.17单体', '1.1.18基料', '1.1.19天然漆基', '1.1.20中间体',
         '1.1.21油及脂肪酸', '1.1.22其它树脂和基料', '1.2颜料及填充剂', '1.2.01防腐颜料', '1.2.02效果颜料',
         '1.2.03无机颜料', '1.2.04有机颜料', '1.2.05白色颜料', '1.2.06浓缩颜料', '1.2.07其它颜料', '1.2.08填充剂',
         '1.3功能助剂及溶剂', '1.3.01消泡剂/防泡剂', '1.3.02防结皮剂', '1.3.03粘合促进剂', '1.3.04杀菌剂及防腐剂',
         '1.3.05交联剂', '1.3.06催干剂', '1.3.07乳化剂', '1.3.08表面活性剂', '1.3.09分散剂', '1.3.10流变改进剂',
         '1.3.11增稠剂', '1.3.12触变剂', '1.3.13流平剂', '1.3.14消光剂', '1.3.15稳定剂', '1.3.16蜡类', '1.3.17催化剂',
         '1.3.18增滑助剂及滑润剂', '1.3.19增塑剂', '1.3.20其它助剂', '1.3.21溶剂', '1.3.22引发剂', '2粉末涂料',
         '2.1适合终端应用的树脂及颜料', '2.2改善分散力及应用固体溶剂', '2.3挤压机/挤出机/捏合机',
         '2.4其它粉末涂料生产设备', '2.5用于温度敏感底材的粉末涂料', '2.6紫外线及NIR固化粉末涂料', '2.7聚酯代替物',
         '2.8异氰脲酸三缩水甘油酯系统', '2.9金属效果粉末涂料', '3固化技术', '3.1单体/齐聚物', '3.2光化学及聚合技术',
         '3.3紫外线/电子束固化技术', '3.4应用及设备', '4生产/包装设备及装置', '4.01大规模生产设备及装置',
         '4.02混料器/搅拌机', '4.03溶解设备', '4.04搬运及包装', '4.05自动化及厂房管理',
         '4.06分料、装料及混合/调色系统', '4.07研磨机/研磨介质', '4.08过滤器、泵、计量仪/称重装置', '4.09包装机贴标签机',
         '4.10颜色分散机', '5涂料、油墨及粘合剂产品', '5.1清漆、亮漆', '5.2粉末涂料', '5.3印刷油墨',
         '5.4粘合剂及防渗剂/密封剂/密封胶', '5.5建筑业化学品', '5.6功能及智能涂料及油墨', '5.7纳米技术',
         '6涂料测量及测试', '6.1颜色及其它视像特征', '6.2化学表征', '6.3测量及测试的创新',
         '6.4油漆特征(粘度、流变性、湿性行为等)', '6.5干膜及机械性能(包括耐久性)', '6.6表面分析', '7安全、健康、环保',
         '7.01厂房管理', '7.02回收', '7.03废处理', '7.04卫生及易洁表面', '7.05包装及减废', '7.06环保技术',
         '7.07环保及安全设备', '8其它服务', '8.01顾问', '8.02技术信息', '8.03刊物/传媒', '8.04软件/硬件',
         '8.05电子商务', '8.06培训与教育', '8.07研发', '8.08行业协会', '8.09认证服务']

path = r'E:\【Python项目】\涂料展收集\tuliao'
def check(name,path):
    for root, dirs, files in os.walk(path):
      for file in files:
            Ffile = os.path.join(root, file)
            with open(Ffile, 'r', encoding='utf-8') as f:
                if name in f.read():
                  print('\t\t', Ffile)


for name in keyname:
    print(name)
    check(name,path=path)



这个check函数好像不能运行。
直接循环输出了print(name)了
而不是包含name的时候,输出显示Ffile


想了半天不知道问题出在哪里了。

感谢感谢



Mike_python小 发表于 2023-11-6 18:07:16

你好,根据你提供的代码,我发现问题可能出在 check 函数中。在 check 函数中,你打开了文件并读取其中的内容,但没有使用 return 语句返回任何值,所以即使找到包含 name 的文件,也不会有任何输出。

你可以尝试将 check 函数的最后一行改为 return Ffile,这样函数就能返回包含 name 的文件路径,并在主函数中进行输出。

另外,建议在循环中加入 try-except 语句,以处理可能出现的文件读取异常。代码示例:

import os

keyname = ['1树脂', '1.1树脂及基料', '1.1.01醇酸树脂', '1.1.02丙烯酸树脂', '1.1.03环氧树脂', '1.1.04聚酯树脂',
         '1.1.05聚氨酯树脂', '1.1.06有机硅树脂', '1.1.07氟树脂', '1.1.08混合型树脂', '1.1.09纤维素树脂',
         '1.1.10氯化聚烯烃', '1.1.11氨基树脂', '1.1.12异氰酸盐硬脂', '1.1.13三聚氰胺树脂', '1.1.14天然树脂',
         '1.1.15功能树脂', '1.1.16树脂原材料', '1.1.17单体', '1.1.18基料', '1.1.19天然漆基', '1.1.20中间体',
         '1.1.21油及脂肪酸', '1.1.22其它树脂和基料', '1.2颜料及填充剂', '1.2.01防腐颜料', '1.2.02效果颜料',
         '1.2.03无机颜料', '1.2.04有机颜料', '1.2.05白色颜料', '1.2.06浓缩颜料', '1.2.07其它颜料', '1.2.08填充剂',
         '1.3功能助剂及溶剂', '1.3.01消泡剂/防泡剂', '1.3.02防结皮剂', '1.3.03粘合促进剂', '1.3.04杀菌剂及防腐剂',
         '1.3.05交联剂', '1.3.06催干剂', '1.3.07乳化剂', '1.3.08表面活性剂', '1.3.09分散剂', '1.3.10流变改进剂',
         '1.3.11增稠剂', '1.3.12触变剂', '1.3.13流平剂', '1.3.14消光剂', '1.3.15稳定剂', '1.3.16蜡类', '1.3.17催化剂',
         '1.3.18增滑助剂及滑润剂', '1.3.19增塑剂', '1.3.20其它助剂', '1.3.21溶剂', '1.3.22引发剂', '2粉末涂料',
         '2.1适合终端应用的树脂及颜料', '2.2改善分散力及应用固体溶剂', '2.3挤压机/挤出机/捏合机',
         '2.4其它粉末涂料生产设备', '2.5用于温度敏感底材的粉末涂料', '2.6紫外线及NIR固化粉末涂料', '2.7聚酯代替物',
         '2.8异氰脲酸三缩水甘油酯系统', '2.9金属效果粉末涂料', '3固化技术', '3.1单体/齐聚物', '3.2光化学及聚合技术',
         '3.3紫外线/电子束固化技术', '3.4应用及设备', '4生产/包装设备及装置', '4.01大规模生产设备及装置',
         '4.02混料器/搅拌机', '4.03溶解设备', '4.04搬运及包装', '4.05自动化及厂房管理',
         '4.06分料、装料及混合/调色系统', '4.07研磨机/研磨介质', '4.08过滤器、泵、计量仪/称重装置', '4.09包装机贴标签机',
         '4.10颜色分散机', '5涂料、油墨及粘合剂产品', '5.1清漆、亮漆', '5.2粉末涂料', '5.3印刷油墨',
         '5.4粘合剂及防渗剂/密封剂/密封胶', '5.5建筑业化学品', '5.6功能及智能涂料及油墨', '5.7纳米技术',
         '6涂料测量及测试', '6.1颜色及其它视像特征', '6.2化学表征', '6.3测量及测试的创新',
         '6.4油漆特征(粘度、流变性、湿性行为等)', '6.5干膜及机械性能(包括耐久性)', '6.6表面分析',
         '7安全、健康、环保', '7.01厂房管理', '7.02回收', '7.03废处理', '7.04卫生及易洁表面', '7.05包装及减废',
         '7.06环保技术', '7.07环保及安全设备', '8其它服务', '8.01顾问', '8.02技术信息', '8.03刊物/传媒',
         '8.04软件/硬件', '8.05电子商务', '8.06培训与教育', '8.07研发',

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-11-6 18:09:04

问题出在你的代码缩进上。在你的代码中, check 函数的定义和 for 循环的定义之间没有正确缩进。这导致 check 函数没有被正确调用,而是直接执行了 print(name) 语句。要解决这个问题,你需要将 check 函数的定义缩进到 for 循环的内部。

以下是修改后的代码:

import os

keyname = ['1树脂', '1.1树脂及基料', '1.1.01醇酸树脂', '1.1.02丙烯酸树脂', '1.1.03环氧树脂', '1.1.04聚酯树脂',
         '1.1.05聚氨酯树脂', '1.1.06有机硅树脂', '1.1.07氟树脂', '1.1.08混合型树脂', '1.1.09纤维素树脂',
         '1.1.10氯化聚烯烃', '1.1.11氨基树脂', '1.1.12异氰酸盐硬脂', '1.1.13三聚氰胺树脂', '1.1.14天然树脂',
         '1.1.15功能树脂', '1.1.16树脂原材料', '1.1.17单体', '1.1.18基料', '1.1.19天然漆基', '1.1.20中间体',
         '1.1.21油及脂肪酸', '1.1.22其它树脂和基料', '1.2颜料及填充剂', '1.2.01防腐颜料', '1.2.02效果颜料',
         '1.2.03无机颜料', '1.2.04有机颜料', '1.2.05白色颜料', '1.2.06浓缩颜料', '1.2.07其它颜料', '1.2.08填充剂',
         '1.3功能助剂及溶剂', '1.3.01消泡剂/防泡剂', '1.3.02防结皮剂', '1.3.03粘合促进剂', '1.3.04杀菌剂及防腐剂',
         '1.3.05交联剂', '1.3.06催干剂', '1.3.07乳化剂', '1.3.08表面活性剂', '1.3.09分散剂', '1.3.10流变改进剂',
         '1.3.11增稠剂', '1.3.12触变剂', '1.3.13流平剂', '1.3.14消光剂', '1.3.15稳定剂', '1.3.16蜡类', '1.3.17催化剂',
         '1.3.18增滑助剂及滑润剂', '1.3.19增塑剂', '1.3.20其它助剂', '1.3.21溶剂', '1.3.22引发剂', '2粉末涂料',
         '2.1适合终端应用的树脂及颜料', '2.2改善分散力及应用固体溶剂', '2.3挤压机/挤出机/捏合机',
         '2.4其它粉末涂料生产设备', '2.5用于温度敏感底材的粉末涂料', '2.6紫外线及NIR固化粉末涂料', '2.7聚酯代替物',
         '2.8异氰脲酸三缩水甘油酯系统', '2.9金属效果粉末涂料', '3固化技术', '3.1单体/齐聚物', '3.2光化学及聚合技术',
         '3.3紫外线/电子束固化技术', '3.4应用及设备', '4生产/包装设备及装置', '4.01大规模生产设备及装置',
         '4.02混料器/搅拌机', '4.03溶解设备', '4.04搬运及包装', '4.05自动化及厂房管理',
         '4.06分料、装料及混合/调色系统', '4.07研磨机/研磨介质', '4.08过滤器、泵、计量仪/称重装置', '4.09包装机贴标签机',
         '4.10颜色分散机', '5涂料、油墨及粘合剂产品', '5.1清漆、亮漆', '5.2粉末涂料', '5.3印刷油墨',
         '5.4粘合剂及防渗剂/密封剂/密封胶', '5.5建筑业化学品', '5.6功能及智能涂料及油墨', '5.7纳米技术',
         '6涂料测量及测试', '6.1颜色及其它视像特征', '6.2化学表征', '6.3测量及测试的创新',
         '6.4油漆特征(粘度、流变性、湿性行为等)', '6.5干膜及机械性能(包括耐久性)', '6.6表面分析', '7安全、健康、环保',
         '7.01厂房管理', '7.02回收', '7.03废处理', '7.04卫生及易洁表面', '7.05包装及减废', '7.06环保技术',
         '7.07环保及安全设备', '8其它服务', '8.01顾问', '8.02技术信息', '8.03刊物/传媒', '8.04软件/硬件',
         '8.05电子商务', '8.06培训与教育', '8.07研发', '8.08行业协会', '8.09认证服务']

path = r'E:\【Python项目】\涂料展收集\tuliao'

def check(name, path):
    for root, dirs, files in os.walk(path):
      for file in files:
            Ffile = os.path.join(root, file)
            with open(Ffile, 'r', encoding='utf-8') as f:
                if name in f.read():
                  print('\t\t', Ffile)

for name in keyname:
    print(name)
    check(name, path=path)


希望能帮到你!

fineconey 发表于 2023-11-6 19:28:29

一样的,都没有搞定。

叼辣条闯世界 发表于 2023-11-6 20:28:44

本帖最后由 叼辣条闯世界 于 2023-11-6 20:54 编辑

确定文件里有这些内容并且完全匹配吗(3.4应用及设备 和 3.4 应用及设备不是一个东西)?我本地跑没问题啊

lassiter 发表于 2023-11-6 20:48:34

会不会是文件里的name前面虽然有序号,但是序号和文字之间有空格,就像这样
“1.1.05聚氨酯树脂”---“1.1.05 聚氨酯树脂”,这样程序是认为内容不一样的。
页: [1]
查看完整版本: 函数不运行的问题。