尝试使用python的win32api模块在Windows上编写“ ls”脚本

时间:2018-12-11 23:17:48

标签: python-3.x winapi

我正在尝试使用python在Windows上创建ls脚本。我安装了win32api模块,但我真的不知道要使用它。例如,我想添加一个选项-l来查看文件的大小,以及一个选项-c来计算文件夹中文件的数量。 这是我目前的代码

import os 
import argparse
import win32api

def parse_args():
parser = argparse.ArgumentParser(description = 'Affiche les fichiers contenus dans un dossier')
parser.add_argument('directory', type=str, nargs='?', default='.')
parser.add_argument('--all','-a', action='store_true', help= "Inclus les fichiers cachés")
parser.add_argument('--recursive','-R', action='store_true', help=" Recherche recursive descend dans les dossiers")
parser.add_argument('--lenght','-l', action='store_true', help= "Affiche la taille des fichiers")
parser.add_argument('--count','-c', action='store_true', help=" Indique le nombre de lignes des fichiers")
parser.add_argument('--directories','-d', action='store_true', help=" N'affiche que les dossiers et le nombre de fichiers contenus")
parser.add_argument('--reverse','-r', action='store_true', help="Inverse l'ordre d'affichage")
return parser.parse_args()

def ls(args):

    if args.all:
            print ("afficher tous les dossiers et fichers cachés")
            ls_all(args)

    if args.recursive:
            print ("Recherche recursive descend dans les dossiers")
            ls_recursive(args)

    if args.lenght:
            print ("affiche la taille des fichiers")
            ls_long(args)

    if args.count:
            print ("indique le nombre de lignes des fichiers")
            ls_count(args)

    if args.directories:
            print ("N'affiche que les dossiers et le nombre de fichiers contenus")
            ls_directories(args)

    if args.reverse:
            print ("Inverse l'ordre d'affichage")
            ls_reverse(args)

    else:
        for fn in listdir(args):
                print (fn) 

def ls_all(args):
        attribute = win32api.GetFileAttributes(args.directory)


# def ls_long(args):


def listdir(args):
        dirs = os.listdir(args.directory)
        dirs.sort()
        return dirs

if __name__ == '__main__':
    args = parse_args()
    ls(args)

1 个答案:

答案 0 :(得分:0)

  1. 尝试使用os.path.getsize()获取文件的大小,然后计算目录下的所有文件:

for root, dirs, files in os.walk(args.directory): for f in files: size += os.path.getsize(os.path.join(root, f)) print size

  1. 有关文件数:

print len([name for name in os.listdir(args.directory) if os.path.isfile(os.path.join(args.directory, name))])