鱼C论坛

 找回密码
 立即注册
查看: 860|回复: 5

[已解决]函数不运行的问题。

[复制链接]
发表于 2023-11-6 18:04:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码如下:
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


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

感谢感谢



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

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

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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研发',

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)

希望能帮到你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-6 19:28:29 | 显示全部楼层
一样的,都没有搞定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-11-6 20:28:44 | 显示全部楼层    本楼为最佳答案   
本帖最后由 叼辣条闯世界 于 2023-11-6 20:54 编辑

确定文件里有这些内容并且完全匹配吗(3.4应用及设备 和 3.4 应用及设备不是一个东西)?我本地跑没问题啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-6 20:48:34 | 显示全部楼层
会不会是文件里的name前面虽然有序号,但是序号和文字之间有空格,就像这样
“1.1.05聚氨酯树脂”---“1.1.05 聚氨酯树脂”,这样程序是认为内容不一样的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 15:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表