【Educoder作业】操作系统之文件管理(二) ※

Sorry~拖更这么久,都快到ddl了才发。英语真是太难了

这次主要是几个 o s os os库里函数的运用,给我搞得有点小晕。
介绍几个概念:绝对路径和相对路径。
绝对路径就是说从根目录开始的路径,以 / / /作为开头;相对路径是相对当前位置的路径,不以 / / /开头。
这里我们讨论的都是相对路径。

第二个事儿,就是两个左斜杠和一个右斜杠效果是一样的,如果不在 p r i n t print print函数里直接打印路径,单个左斜杠也没问题。

T1 文件操作

B t o K M G BtoKMG BtoKMG函数题目里的表述并不清晰,当然测试数据也没要求这个,都是 0.0 K B 0.0KB 0.0KB。我个人的理解是,从最大单位开始遍历,如果不小于一个当前单位,就以当前单位表述。举个例子,比如说 2 30 B 2^{30}B 230B就是 1.0 G B 1.0GB 1.0GB,如果比这个还要小就要用 M B MB MB输出了。
关于 p r i n t F i l e I n f o printFileInfo printFileInfo函数,写好递归即可,文件大小有两种,一种是 o s . p a t h . g e t s i z e os.path.getsize os.path.getsize,一种是 o s . s t a t . s t _ s i z e ( ) os.stat.st\_size() os.stat.st_size(),里面放路径即可。

import os
import os.path
# 此函数将容量信息更改为 kb、mb、gb 为单位
def BtoKMG(n):
    #*********** Begin **********#
    output = 'KMG'
    for i in range(3, 0, -1) :
        # output[i - 1]
        mdl = pow(2, i * 10)
        if n >= mdl or i == 1 :
            return ('%.1f' % (n / mdl)) + ' ' + output[i - 1] + 'B'
    #*********** End **********#'

# 递归函数 获取当前文件夹的文件信息及子文件夹的文件信息
def printFileInfo(baseDir, keyword):
    #*********** Begin **********#
    for f in os.listdir(baseDir) :
        mdl = baseDir + '/' + f
        if os.path.isdir(mdl) :
            printFileInfo(mdl, keyword)
        else :
            if keyword in f :
                print(f, BtoKMG(os.path.getsize(mdl)), mdl, sep = ' \t ')

    # 直接打印结果即可
    #*********** Begin **********#

T2 文件读写

这个题就没坑了,只需要知道如果用 r e a d l i n e s readlines readlines的话后面有\n,所以要 r e p l a c e replace replace一下或者特判。

def find(path, keyword):
    #*********** Begin **********#
    #打印结果即可
    txt = open(path, 'r')
    content = txt.readlines()
    Sum = 0
    Lines = len(content)
    print('“%s”出现在以下位置:' % keyword)
    for i in range(Lines) :
        content[i] = content[i].replace('\n', '')
        if keyword in content[i] :
            # content[i]
            print('--第 %d 行: '  % (i + 1)   + content[i])
            Sum += 1
    print('共 %d 行' % Sum)
    
    #*********** End **********#
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐