Ich habe es wieder geschafft, um Python zu üben.
Gibt den absoluten Pfad und die Größe einer Datei mit einer Kapazität aus, die größer als die im Terminal festgelegte Kapazität ist. Die Optionen sind wie folgt
---- start: Sie können den Startpunkt der Dateisuche festlegen ---- sort: Ausgabe von großen Dateien ---- mehr: Sie können die Ausgangsreferenzkapazität einstellen ---- grep: Es können nur Pfade angezeigt werden, die die angegebene Zeichenfolge enthalten
Ubuntu18.04LTS Python3.6.9 vim
import argparse
import os
class Measure:
def __init__(self, sort=None, more=None, grep=None):
self.sort = sort
if more is None:
self.more = 1024 * 1024
else:
self.more = more
self.grep = grep
self.result = []
def get_list(self):
path_list = []
dir_list = []
for content in os.listdir():
if os.path.isfile(content):
path_list.append(content)
elif os.path.isdir(content):
dir_list.append(content)
return path_list, dir_list
def measure(self, path_list):
for path in path_list:
if os.path.getsize(path) > self.more:
self.result.append(
(os.path.abspath(path), os.path.getsize(path))
)
def get_deeper(self, dir_list):
for dire in dir_list:
if os.path.islink(dire):
continue
os.chdir(dire)
self.main()
os.chdir('../')
def main(self):
path_list, dir_list = self.get_list()
self.measure(path_list)
self.get_deeper(dir_list)
def search(self, word):
for i in self.grep:
if word.find(i) >= 0:
return word
else:
return
def convert_unit(self, capacity):
unit = {0: 'B', 1: 'KB', 2: 'MB', 3: 'GB', 4: 'TB'}
count = 0
while capacity // 1024:
capacity /= 1024
count += 1
capacity = round(capacity)
capacity = str(capacity) + unit[count]
return capacity
def show_result(self):
if self.sort:
self.result = sorted(self.result, key=lambda z: z[1], reverse=True)
for path, capacity in self.result:
if self.grep:
path = self.search(path)
if path is None:
continue
capacity = self.convert_unit(capacity)
print(path, capacity)
def get_parser():
parser = argparse.ArgumentParser(description='search file\'s capacity')
parser.add_argument('--start', help='')
parser.add_argument('--sort', action='store_true', help='')
parser.add_argument('--more', type=int, help='')
parser.add_argument('--grep', nargs='*', help='')
return parser.parse_args()
def cli():
args = get_parser()
if args.start:
try:
os.chdir(args.start)
except FileNotFoundError:
print(args.start , 'is not file or directory.')
return
m = Measure(args.sort, more=args.more, grep=args.grep)
m.main()
m.show_result()
if __name__ == '__main__':
cli()
Ich werde jederzeit verschiedene Funktionen hinzufügen, z. B. eine Funktion zum Anzeigen des letzten Änderungsdatums der Datei und eine Funktion zum Speichern des Ergebnisses in einer CSV-Datei.
Recommended Posts