利用OS模块为Python程序做一个目录

在学习Python时,少不了要多多编写程序,可是时间一长,当我们想要查找以前写过的某个程序时,少不了要好长一段时间进行查找,说不定还得挨个打开程序进行查找。那么有没有一种简单的方法,能使我们写过的Python程序像一本书的目录那样呈现出来呢?

  • 首先在编写程序的时候,我们要养成一个良好的习惯,在每个程序的第一行写上注释,说明这个程序是干什么的;
  • 其次,可以按照自己的个人习惯将程序整理在一个(或多个)目录下;
  • 最后一点,也就是我们本篇文章的重点了——利用OS模块打印指定目录下py文件(Python程序文件名以 '.py' 结尾)的绝对路径,以及读取并打印每个程序的第一行注释。

这样,当我们想要查找某个程序时,只需要将这个程序先运行一下,我们便可以像查看书的目录一样,找到我们想要的程序了。因为这个程序是以我电脑上的文件做参考的,所以不具有通用性,大家在自己的电脑上运行时,要结合自己电脑文件的位置做适当的调整。下面放一张我电脑上Python程序的存放情况:

方法一:

import os
os.chdir("D:\\st13\\python")         #切换到D:\\st13\\python目录

for fp in os.listdir():              #遍历D:\\st13\\python下的所有文件名和目录名
    #如果fp是一个目录,则将路径D:\\st13\\python与fp连接起来
    if os.path.isdir(fp):
        print(os.path.join("D:\\st13\\python",fp))

        for f in os.listdir(fp):     #遍历目录fp下的所有文件名和目录名
            #如果f是以'.py'结尾的,则打印出文件f的绝对路径
            if f.endswith(".py"):
                print("\t",os.path.abspath(f),end='')  
                #读取并打印文件f的第一行内容
                with open(fp+"\\"+f,encoding="utf-8") as f1:   
                    print("\t\t",f1.readline())  

运行结果如下:(内容太多,只放了部分结果)

D:\st13\python\1.10
         D:\st13\python\zuoye1.py                #滚动的广告屏幕

         D:\st13\python\zuoye2.py                #字符串的格式化  

         D:\st13\python\zuoye3.py                #位运算 &  |  ^(异或)  ~(取反)   >>    <<

         D:\st13\python\zuoye4.py                #统计一句话中数字、字母、汉字出现的次数

         D:\st13\python\zuoye5.py                #分支语句的练习 

D:\st13\python\1.11
         D:\st13\python\zuoye1.py                #for、while以及多层循环  

         D:\st13\python\zuoye2.py                #控制循环break、continue、else的使用  

         D:\st13\python\zuoye3.py                #元组的用法  判断某天是这一年的第几天 

         D:\st13\python\zuoye4.py                #列表的用法---学生成绩管理系统   

D:\st13\python\1.14
         D:\st13\python\zuoye1.py                #集合的基本用法  

         D:\st13\python\zuoye2.py                #字典的基本用法 

         D:\st13\python\zuoye3.py                #使用字典获取12306车站信息

         D:\st13\python\zuoye4.py                #统计12306所有全拼重复的车站信息   

方法二:

import os

def sfile(dir,layer=1):
    print("\t"*(layer-1)+dir)    
    #遍历D:\\st13\\python下的所有文件名和目录名
    for fp in os.listdir(dir):
        nf=os.path.join(dir,fp)  #将路径D:\\st13\\python与fp连接起来
        
        #如果nf是一个目录,则调用sfile()函数
        if os.path.isdir(nf):
            sfile(nf,layer+1)   
        #如果nf是一个文件,且以'.py'结尾,则打印文件nf的绝对路径
        else:
            if nf.endswith(".py"):
                print("\t"*layer+nf,end="\t"*(5-layer))  
                #读取并打印文件nf的第一行内容
                with open(nf,encoding="utf-8") as f1:
                    print(f1.readline().strip())  
                    
sfile("D:\\st13\\python")        #调用sfile函数,并将D:\\st13\\python赋给dir

运行结果如下:

D:\st13\python
        D:\st13\python\1.10
                D:\st13\python\1.10\zuoye1.py                   #滚动的广告屏幕
                D:\st13\python\1.10\zuoye2.py                   #字符串的格式化  
                D:\st13\python\1.10\zuoye3.py                   #位运算 &  |  ^(异或)  ~(取反)   >>    <<
                D:\st13\python\1.10\zuoye4.py                   #统计一句话中数字、字母、汉字出现的次数 
                D:\st13\python\1.10\zuoye5.py                   #分支语句的练习  
        D:\st13\python\1.11
                D:\st13\python\1.11\zuoye1.py                   #for、while以及多层循环  
                D:\st13\python\1.11\zuoye2.py                   #控制循环break、continue、else的使用  
                D:\st13\python\1.11\zuoye3.py                   #元组的用法  判断某天是这一年的第几天 
                D:\st13\python\1.11\zuoye4.py                   #列表的用法---学生成绩管理系统   
        D:\st13\python\1.14
                D:\st13\python\1.14\zuoye1.py                   #集合的基本用法  
                D:\st13\python\1.14\zuoye2.py                   #字典的基本用法 
                D:\st13\python\1.14\zuoye3.py                   #使用字典获取12306车站信息
                D:\st13\python\1.14\zuoye4.py                   #统计12306所有全拼重复的车站信息 
        D:\st13\python\1.15
                D:\st13\python\1.15\zuoye1.py                   #函数的定义及使用 
                D:\st13\python\1.15\zuoye2.py                   # 变量作用范围 
                D:\st13\python\1.15\zuoye3.py                   #变量与不变量  
        D:\st13\python\1.16
                D:\st13\python\1.16\hcz.py                      #使用字典获取12306车站信息
                D:\st13\python\1.16\zuoye1.py                   #匿名函数和高阶函数  
                D:\st13\python\1.16\zuoye2.py                   #异常处理  
                D:\st13\python\1.16\zuoye3.py                   #断言  
                D:\st13\python\1.16\zuoye4.py                   #日志模块 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值