【Educoder作业】操作系统之文件管理(二) ※
这次主要是几个os库里函数的运用,给我搞得有点小晕。介绍几个概念:绝对路径和相对路径。绝对路径就是说从根目录开始的路径,以/作为开头;相对路径是相对当前位置的路径,不以/开头。这里我们讨论的都是相对路径。第二个事儿,就是两个左斜杠和一个右斜杠效果是一样的,如果不在print函数里直接打印路径,单个左斜杠也没问题。BtoKMG函数题目里的表述并不清晰,当然测试数据也没要求这个,都是0.0KB。我个人
【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 **********#
更多推荐
所有评论(0)