鱼C论坛

 找回密码
 立即注册
查看: 1257|回复: 1

关于递归返回上一层文件的问题(没错又是这个)

[复制链接]
发表于 2019-7-19 18:54:12 | 显示全部楼层 |阅读模式

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

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

x
在问之前我也查过,看过论坛里面的相关帖子,也大概理解了为什么
然后今天具体想问的就是我这样递归可不可行(35课练习)
重点在27行,我在那里用的是新建一个列表来进行查询,是不是就不用返回上一层了啊
我试过更改我的文件夹,让他有各种各样的子目录,同名文件,都能全访问到
但还是来问问比较安全
  1. import easygui as g
  2. import os.path,os,sys
  3. def sumline(new_way):
  4.         line = 0
  5.         f = open(new_way,encoding='UTF-8')
  6.         for each_line in f.readline():
  7.                 line += 1
  8.         f.close()
  9.         return line
  10. def check(ext,new_way):
  11.         global py,c,cpp,pas,asm,pyline,cline,cppline,pasline,asmline
  12.         if ext == '.py':
  13.                 py += 1
  14.                 pyline += sumline(new_way)
  15.         elif ext == '.c':
  16.                 c += 1
  17.                 cline += sumline(new_way)
  18.         elif ext == '.cpp':
  19.                 cpp += 1
  20.                 cppline += sumline(new_way)
  21.         elif ext == '.pas':
  22.                 pas += 1
  23.                 pasline += sumline(new_way)
  24.         elif ext == '.asm':
  25.                 asm += 1
  26.                 asmline += sumline(new_way)
  27. def lookfor(way):
  28.         list0 = os.listdir(way)
  29.         for each in range(len(list0)):
  30.                 path = list0[each]
  31.                 new_way = os.path.join(way,list0[each])
  32.                 ext = os.path.splitext(path)[1]
  33.                 if os.path.isdir(new_way):
  34.                         lookfor(new_way)
  35.                         os.chdir(os.pardir)#这里我删了以后也可以访问到所有文件夹
  36.                 elif ext in ['.py','.c','.cpp','.pas','.asm']:
  37.                         check(ext,new_way)
  38. py=c=cpp=pas=asm=0
  39. pyline=cline=cppline=pasline=asmline=0
  40. way = g.diropenbox('请选择您的代码库','浏览文件夹')
  41. lookfor(way)
  42. text1 = ('[.py]源文件%d个,源代码%d行\n' % (py,pyline))
  43. text2 = ('[.c]源文件%d个,源代码%d行\n' % (c,cline))
  44. text3 = ('[.cpp]源文件%d个,源代码%d行\n' % (cpp,cppline))
  45. text4 = ('[.pas]源文件%d个,源代码%d行\n' % (pas,pasline))
  46. text5 = ('[.asm]源文件%d个,源代码%d行' % (asm,asmline))
  47. text = text1 + text2 + text3 + text4 + text5
  48. sum = pyline+cline+cppline+pasline+asmline
  49. percentage = '{:.2f}%'.format(100*sum/100000)
  50. msg = '''您目前共累积编写了%d行代码,完成进度:%s
  51. 离10万行代码还差%d行,请继续努力''' % (sum,percentage,100000-sum)
  52. title = '统计结果'
  53. g.textbox(msg=msg,title=title,text=text)
  54. sys.exit()


复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-7-19 18:57:25 | 显示全部楼层
第6行是错的
for each_line in f.readline():
应该改成
for each_line in f:
这里忽略就好我的我的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-17 01:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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