masklinn í dag viðrar vel til loftárása | tiens j'ai commencé à développer un truc en Python/wxPython (pour localiser les données dont j'ai perdu la trace dans mon bordel à la base)
Code :
- #!/bin/env python
- # -*- encoding: iso-8859-1 -*-
- __author__ = "Xavier Morel (sri_71a@hotmail.com)"
- __version__ = "$Version 0.0.1 $"
- __date__ = "$Date: 2004/07/28 23:18:29 $"
- __copyright__ = "Copyright (c) 2004 Xavier Morel"
- __license__ = "Python"
- """
- TODO:
- Use SplitTree instead of regular TreeCtrl
- Use size as PyData
- Add images
- Add optionnal files display
- Add trigger for red color
- Status bar on resize (should move + resize)
- Enable errors logging
- Handle errors (exceptions) in parsing
- Add options panel (deploy/hide + window resize)
- Add frame resize on tree mod
- Show/hide statusbar (not delete/create)
- """
- import os
- import wx
- from wx.lib import filebrowsebutton
- import thread
- def ParseDir(p, tree = None, item = None, status = None):
- """ Get size of directory """
- size = 0
- for pt in os.listdir(p):
- path = os.path.join(p, pt)
- if os.path.isdir(path):
- #print path, "is a directory"
- MyItem = None
- if item:
- MyItem = tree.AppendItem(item, pt+"\\" )
- status.SetStatusText("Parsing %s" % path, 0)
- try:
- size += ParseDir(path, tree, MyItem, status)
- except:
- pass
- else:
- try:
- itemsize = os.path.getsize(path)
- size += itemsize
- if item:
- tree.AppendItem(item, "%s %.2fMo" % (pt, itemsize/(1024.**2)))
- except:
- pass
- tree.SetItemText(item, "%s %.2fMo" % (tree.GetItemText(item), size/(1024.**2)))
-
- return size
-
- class MyFrame(wx.Frame):
- def __init__(self, parent, title):
- wx.Frame.__init__(self, parent, -1, title, size = (550, 300))
-
- self.SetBackgroundColour(wx.Colour(212, 208, 200))
-
- self.diritem = filebrowsebutton.DirBrowseButton(self,
- -1,
- (-1,-1),
- (450, -1))
-
- self.btn = wx.Button(self, -1, "Parse" )
-
- self.tree = wx.TreeCtrl(self, -1, style = wx.TR_HAS_BUTTONS)
-
- self.threadlock = thread.allocate_lock()
-
- self.Bind(wx.EVT_BUTTON, self.OnParseButton, id = self.btn.GetId())
-
- btnsizer = wx.BoxSizer(wx.HORIZONTAL)
- mainsizer = wx.BoxSizer(wx.VERTICAL)
-
- btnsizer.Add(self.diritem, 0, wx.ALIGN_CENTRE_VERTICAL)
- btnsizer.Add(self.btn, 0, wx.ALIGN_CENTRE_VERTICAL)
-
- mainsizer.Add(btnsizer, 0, wx.ALIGN_CENTRE_HORIZONTAL)
- mainsizer.Add(self.tree, 1, wx.GROW)
-
- self.tree.Show(False)
-
- self.SetSizer(mainsizer)
- self.SetAutoLayout(True)
- self.Show()
-
- def OnParse(self):
- self.tree.Hide()
- status = wx.StatusBar(self, -1)
- status.SetFieldsCount(1)
- status.SetStatusText("Parsing directory", 0)
- self.tree.DeleteAllItems()
- root = self.tree.AddRoot(self.diritem.GetValue())
- size = ParseDir(self.diritem.GetValue(), self.tree, root, status)
- self.tree.Expand(root)
- del status
- self.tree.Show()
- self.threadlock.release()
- thread.exit()
-
- def OnParseButton(self, evt):
- if self.diritem.GetValue() and self.threadlock.acquire(0):
- thread.start_new_thread(self.OnParse, ())
-
-
- app = wx.PySimpleApp()
- frame = MyFrame(None, "Directory Parser" )
- app.MainLoop()
|
tu ouvres Notepad, tu colles tout ca dedans, fichier->enregistrer sous
là dans "Type" tu sélectionne "Tous les fichiers" et dans "nom de fichier" tu entres "dirsizer.py", tu sauvegardes ca la ou tu veux.
Ensuite si t'as pas encore Python, tu le télécharges (http://www.python.org/ftp/python/2 [...] -2.3.4.exe), tu l'installes (pense à associer python avec les fichiers .py, .pyw et .pyc quand ils te le demandent à la fin) puis télécharges wxPython (http://prdownloads.sourceforge.net [...] 5-Py23.exe), tu l'installes aussi
Quand t'as fini, tu lances le script dirsizer.py (dbl click)
clic sur "Browse", sélectionne le répertoire à parser (genre ton DD) puis clic sur "Parse" et attend (c'est long, surtout si t'as beaucoup de fichiers)
ca va afficher un tree (à expand toi même) avec tous les répertoires et tous les fichiers
par contre faudra te démerder pour sauvegarder la donnée
à titre purement indicatif:
PIII 700, DD inconnu (un vieux 5400 je pense), 512Mo RAM, partition non système
3.24Go dans 39608 fichiers et 2474 dossiers
le parse complet a pris ~55s Message édité par masklinn le 29-07-2004 à 16:25:48 ---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
|