鱼C论坛

 找回密码
 立即注册
查看: 1633|回复: 4

[已解决]代码问题

[复制链接]
发表于 2017-12-15 13:41:33 | 显示全部楼层 |阅读模式

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

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

x
  1. import os

  2. def file_keywords(keywords):
  3.     global dic
  4.     for each_file in os.listdir(os.curdir):
  5.         if not os.path.isdir(each_file):
  6.             ext = os.path.splitext(each_file)[1]
  7.             if ext == '.txt':
  8.                 file=open(each_file)
  9.                 count=0
  10.                 content=file.read()
  11.                 file.close()
  12.                 content=content.split('\n')
  13.                 for each_line in content:
  14.                     count+=1
  15.                     if keywords in each_line:
  16.                         key=os.getcwd()+os.sep+each_file+','+str(count)
  17.                         dic[key]=each_line.index(keywords)
  18.         else:
  19.             os.chdir(each_file)
  20.             file_keywords(keywords)
  21.             os.chdir(os.pardir)
  22.             
  23. def file_print(dic):
  24.     if dic!={}:
  25.         print('请问是否打印出关键字【%s】在文件中的位置【yes/no】:'%keywords,end='')
  26.         decision=input()
  27.         if decision in ('YES','Yes','yes'):
  28.             global list_path
  29.             list_path=[]
  30.             for each_key in dic:
  31.                 path=each_key.split(',')[0]
  32.                 if path not in list_path:
  33.                     list_path.append(path)
  34.             for i in range(len(list_path)):
  35.                 print('==============================================')
  36.                 print('在文件【%s】中找到关键字【%s】'%(list_path[i],keywords))
  37.                 global dic_sort
  38.                 global dic_lines
  39.                 dic_lines={}
  40.                 dic_sort=[]
  41.                 for each in dic:
  42.                     each_path=each.split(',')[0]
  43.                     if each_path == list_path[i]:
  44.                         lines=each.split(',')[1]
  45.                         dic_lines[lines]=dic[each]
  46.                 for each_lines in dic_lines:
  47.                     dic_sort.append(int(each_lines))
  48.                 dic_sort=dic_sort.sort()                              

  49. keywords=input('请将该代码放于待查找的文件夹内,请输入关键字:')
  50. dic=dict()
  51. file_keywords(keywords)
  52. file_print(dic)
复制代码

这个问题就是我把变量变成global之后,发现如果不放在函数中没问题,但是放在函数中,运行之后,再查看dic_sort的值就是None,所以想问一下为什么
最佳答案
2017-12-15 14:40:29
戈戈戈戈戈戈哒 发表于 2017-12-15 14:16
您好,我不太会在回复中插入图片,题目和我写代码的思路,以及所遇到的问题都写在了楼下,十分感谢您的回 ...

sort函数是对列表本身进行操作,
把49行改成
dic_sort.sort()
即可
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-15 14:00:13 | 显示全部楼层
你说的是具体哪个变量?
程序要实现什么?
难道要读者自己先分析你的代码是做什么的吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-15 14:14:35 | 显示全部楼层
捕获.PNG
变量是在代码第41行出现的dic_sort,运行之后发现变成了None,为了查出错误,我把其他部分的结果摘出来,直接带到含有dic_sort的代码中,是可以得到我想要的数据的。
在这里我是想先在dic字典中存储key为路径和行数,value为位置
再在list_path中放置不同的路径
dic_lines字典中的key是行数,value是位置
将dic_lines的key变成int格式存储到dic_sort中,并进行排序,但是这里出现了问题,运行结果dic_sort为None
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-15 14:16:07 | 显示全部楼层
BngThea 发表于 2017-12-15 14:00
你说的是具体哪个变量?
程序要实现什么?
难道要读者自己先分析你的代码是做什么的吗

您好,我不太会在回复中插入图片,题目和我写代码的思路,以及所遇到的问题都写在了楼下,十分感谢您的回复和解答
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-15 14:40:29 | 显示全部楼层    本楼为最佳答案   
戈戈戈戈戈戈哒 发表于 2017-12-15 14:16
您好,我不太会在回复中插入图片,题目和我写代码的思路,以及所遇到的问题都写在了楼下,十分感谢您的回 ...

sort函数是对列表本身进行操作,
把49行改成
dic_sort.sort()
即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 19:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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