鱼C论坛

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

[已解决]easygui配文件搜索问题

[复制链接]
发表于 2019-6-26 21:54:34 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 逆鳞丶樱之羽 于 2019-6-26 22:40 编辑

两个问题,其一:搜索['.py','.c','.cpp','.pas','.asm']这些没用 其二:当搜索格式不存在时,触发ccbox点continue不能循环文件打开的diropenbox
代码
如下:
import easygui as g
import sys
import os
g.msgbox('统计测量')
accumulate = 0
collect1 = 0    #i从1到5为py依序到asm
i1 = 0
collect2 = 0
i2 = 0
collect3 = 0
i3 = 0
collect4 = 0
i4 = 0
collect5 = 0
i5 = 0
while 1:
   source = g.diropenbox()
   for each in os.listdir(source):
     if os.path.splitext(each)[1] in ['.py','.c','.cpp','.pas','.asm']:
         if os.path.splitext(each)[1] in ['.py']:
              collect1 += 1
              with open(each) as f1:
                     f1.readline()
                     i1 += 1
         elif os.path.splitext(each)[1]  in ['.c']:
              collect2 += 1
              with open(each) as f2:
                     f1.readline()
                     i2 += 1
         elif os.path.splitext(each)[1]  in ['.cpp']:
              collect3 += 1
              with open(each) as f3:
                     f3.readline()
                     i3 += 1
         elif os.path.splitext(each)[1] in ['.pas']:
              collect4 += 1
              with open(each) as f4:
                     f4.readline()
                     i4 += 1
         else:
              collect5 += 1
              with open(each) as f5:
                     f1.readline()
                     i5 += 1
         
         break
     else:
         g.msgbox('抱歉,未找到')
         if g.ccbox('是否继续'):
              pass
         else:
              sys.exit(0)
   
with open(source + '统计测量.txt','w') as f:
         left = 10e6 - int(accumulate)
         leftpercent = str(accumulate/10e6) + '\%'
         msg = '我已经完成%d行代码,完成进度:%f \n 离10万行还差%d行,请继续努力' % accumulate,leftpercent,left
         title = '统计结果'
         f.write('''[.py]源文件%s个,总代码行数%s
[.c]源文件%s个,总代码行数%s
[.cpp]源文件%s个,总代码行数%s''' % collect1,i1,collect2,i2,collect3,i3)
         f.write('''[.pas]源文件%s个,总代码行数%s
[.asm]源文件%s个,总代码行数%s''' %  collect4,i4,collect5,i5)
         if g.ccbox('是否继续'):
              pass
         else:
              sys.exit(0)
最佳答案
2019-6-26 23:04:21
逆鳞丶樱之羽 发表于 2019-6-26 23:02
下一个循环不应该从diropenbox开始吗

还在for each in os.listdir(source):这个循环里,里边改break吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-26 22:12:46 | 显示全部楼层
1 each 提取出来的是包含文件名和后缀的,不能和后缀匹配。所以最好把each的后缀提取出来进行对比,具体这样操作
   os.path.splitext(each)[1]
举例:
  1. >>> each = 'test.py'
  2. >>> os.path.splitext(each)[1]
  3. '.py'
复制代码


2 触发ccbox点continue返回True,没有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-26 22:24:30 | 显示全部楼层
newu 发表于 2019-6-26 22:12
1 each 提取出来的是包含文件名和后缀的,不能和后缀匹配。所以最好把each的后缀提取出来进行对比,具体这 ...

ccbox有问题,当搜索内容不存在时,点continue会一直回复else的msgbox内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-26 23:00:02 | 显示全部楼层
逆鳞丶樱之羽 发表于 2019-6-26 22:24
ccbox有问题,当搜索内容不存在时,点continue会一直回复else的msgbox内容

所以你点击continue就已经进入下一个循环了

你想要什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-26 23:02:02 | 显示全部楼层
newu 发表于 2019-6-26 23:00
所以你点击continue就已经进入下一个循环了

你想要什么

下一个循环不应该从diropenbox开始吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-26 23:04:21 | 显示全部楼层    本楼为最佳答案   
逆鳞丶樱之羽 发表于 2019-6-26 23:02
下一个循环不应该从diropenbox开始吗

还在for each in os.listdir(source):这个循环里,里边改break吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 05:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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