python 操作文件和目录两道题目

源自廖雪峰python教程-文件操作和目录
中的两道练习题

1.利用os模块编写一个能实现dir -l输出的程序。
2.编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。

第一道题的代码如下:

import time
import os
filelist = [x for x in os.listdir('.') if os.path.isfile(x)]#找到当前目录的文件类型的文件。
path = os.path.abspath('.')

def get_user_name():
    return os.environ['LOGNAME']#environ是个包含很多环境信息的字典,key为LOGNAME对应的value就是username了

def get_file_time(filename):
    filepath = os.path.join(path,filename)
    localtime = time.localtime(os.path.getatime(filepath))
    return time.asctime(localtime)

def get_file_size(filename):
#先把文件用二进制读入再计算大小,非常蠢,开销很大,系统应该有接口可以读入文件的大小信息,不用计算。现在不知道,先不管。
    with open(filename,'rb') as f:
        return(len(f.read()))
for f in filelist:
    print(get_user_name(),get_file_time(f),get_file_size(f) ,f)

运行结果:


Paste_Image.png

我自己的程序能显示文件主人name,文件创建时间,文件大小,文件名和bash不同的是:1,文件夹没有显示。2,多了隐藏文件,比如文档的交换区文件。

第二道题代码如下:

import os

filename = input("input the file name:\n")

def fileserch(filename):
    filelist = [x for x in os.listdir() if os.path.isfile(x)]
    for f in filelist:
        if filename in str(f[0:f.find(".")]):#要把扩展名刨出去,不然查找文件名中含‘t’的文件,会把所有的txt文件全找出来,这样就不科学了。
            print(os.path.abspath(f))
def findfile(filename):
    fileserch(filename)
    dirlist = [x for x in os.listdir() if os.path.isdir(x)]
    for d in dirlist:
        os.chdir(d)
        findfile(filename)
        os.chdir("..")
findfile(filename)

试验结果:

Paste_Image.png

主要思想是深度搜索,先输出当前目录下所有文件类型的文件,再对所有文件夹类型的文件递归操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,287评论 25 708
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,566评论 9 467
  • 当你的朋友提起爱时,在你旁边说自己有多幸福,多甜蜜时,脑海中会不由自主的想起你们的曾经,曾经。曾经幸福的时光,甜蜜...
    29672bdb32bf阅读 329评论 0 0
  • 前几天,科学课罗老师教我们种绿豆。没有绿豆的也可以拿黄豆来种。回到家,姥姥给我泡了一瓶儿黄豆又泡了一瓶儿绿豆。今天...
    张佳艺阅读 296评论 0 1