Discuss / Python / 第二问打卡

第二问打卡

Topic source

岁益寒

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

第一问:dir -l到底是什么?

结合评论区dl的分享,我的理解是列出当前目录下各个文件的属性(包括最后访问时间、文件大小、文件名称)

import os
import time
path = os.path.abspath('.')
# path = r'C:\Users\admin\Desktop'


def dir_l(path):
    file_num, file_size, dir_num = 0, 0, 0
    for name in os.listdir(path):

        new_path = os.path.join(path, name)
        if os.path.isfile(new_path):
            print('文件名:%s,文件大小:%s,最后访问时间:%s' % (name, os.path.getsize(new_path),
                                                time.strftime('%y-%m-%d %H:%M', time.localtime(os.path.getmtime(new_path)))))
            file_num += 1
            file_size += os.path.getsize(new_path)

        if os.path.isdir(new_path):
            print('文件夹名:%s,最后访问时间:%s,' % (name, time.strftime('%y-%m-%d %H:%M',
                                                              time.localtime(os.path.getmtime(new_path)))))
            dir_num += 1
    print('文件夹共%s个;文件共%s个,总内存为%s个字节' % (dir_num, file_num, file_size))


dir_l(path)

需要注意,在判断某一个对象是否是文件(或目录时)该文件的地址。

如果文件地址在当前地址目录下,可以直接用文件名判断,否则,需要用os..path.join产生绝对路径

import os

path = os.path.abspath('.')
# path = r'C:\Users\admin\Desktop'


def findStrInFile(path, s):
    ls = []
    for name in os.listdir(path):
        new_path = os.path.join(path, name)
        if os.path.isfile(new_path):
            if name.find(s, None) is None:
                pass
            else:
                ls.append(name)
        if os.path.isdir(new_path):
            ls += findStrInFile(new_path, s)
    return ls


print(findStrInFile(path, 'a'))

数学人

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

第二问中

if name.find(s, None) is None:

要改成

if name.find(s) == -1:

吧,要不然会输出目录及子目录下的全部文件名列表


  • 1

Reply