Discuss / Python / 练习题

练习题

Topic source

唯情恋昉

#1 Created at ... [Delete] [Delete and Lock User]

1.利用os模块编写一个能实现dir -l输出的程序

# 使用jupyter notebook如果是在系统目录建文件会有Permission denied: 'NTUSER.DAT'权限问题,需要将默认的jupyter工作路径修改
# 修改jupyter工作路径可参考 https://my.oschina.net/u/4382160/blog/3379673
import time
import os

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

def get_user_name():
    # environ是个包含很多环境信息的字典,key为USERNAME对应的value就是username了
    return os.environ['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)
import os

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

def filesearch(filename):
    filelist = [x for x in os.listdir() if os.path.isfile(x)]
    for f in filelist:
        # 要把拓展名抛出去,不然查找文件名中含't'的文件,会把所有的txt文件全找出来,这样就不科学了
        if filename in str(f[0:f.find(".")]):
            print(os.path.abspath(f))
            
def findfile(filename):
    filesearch(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)

  • 1

Reply