Попытка написания скрипта "ls" в Windows с помощью модуля python win32api. - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь создать сценарий ls в Windows, используя python.Я установил модуль 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 голосов
/ 12 декабря 2018
  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

Для количества файлов:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...