2011-01-03 6 views
0

Mit folgendem Code habe ich immer die gleiche Größe und mtime:Python os.stat Rückkehr immer die gleiche mtime/size

# -*- coding: utf-8 -*- 

import gtk 
import pygtk 
import os 

class LocalFileTreeView(gtk.TreeView): 

    def __init__(self, model = None): 
     super(LocalFileTreeView, self).__init__(model) 

     self.model = gtk.TreeStore(gtk.gdk.Pixbuf, str, str, str) 
     self.create_columns() 
     self.set_model_data('/home/foo/Downloads/') 
     self.set_model(self.model) 

    def create_columns(self): 
     self.icon_cell_renderer = gtk.CellRendererPixbuf() 
     self.filename_cell_renderer = gtk.CellRendererText() 
     self.size_cell_renderer = gtk.CellRendererText() 
     self.last_modified_cell_renderer = gtk.CellRendererText() 

     self.icon_column = gtk.TreeViewColumn(None, self.icon_cell_renderer, pixbuf = 0) 
     self.filename_column = gtk.TreeViewColumn('filename', self.filename_cell_renderer, text = 1) 
     self.size_column = gtk.TreeViewColumn('size', self.size_cell_renderer, text = 2) 
     self.last_modified_column = gtk.TreeViewColumn('last modified', self.last_modified_cell_renderer, text = 3) 

     self.append_column(self.icon_column) 
     self.append_column(self.filename_column) 
     self.append_column(self.size_column) 
     self.append_column(self.last_modified_column) 

    def set_model_data(self, path, iter = None): 
     try: 
      local_files = os.listdir(path) 
      local_files.sort() 
     except OSError: 
      local_files = [] 

     for local_file in local_files: 
      complete_path = path + local_file 
      stat = os.stat(path) 
      if os.path.isdir(complete_path): 
       dir_iter = self.model.append(iter, [self.render_icon(gtk.STOCK_DIRECTORY, gtk.ICON_SIZE_SMALL_TOOLBAR), local_file, None, str(stat.st_mtime)]) 
       self.set_model_data(complete_path + '/', dir_iter) 
      else: 
       self.model.append(iter, [self.render_icon(gtk.STOCK_FILE, gtk.ICON_SIZE_SMALL_TOOLBAR), local_file, str(stat.st_size), str(stat.st_mtime)]) 

class LocalFileTreeViewTest: 
    def __init__(self): 
     self.window = gtk.Window() 
     self.local_file_treeview = LocalFileTreeView() 
     self.scrolled_window = gtk.ScrolledWindow() 

     self.window.set_title('LocalFileTreeView Test') 
     self.window.connect('destroy', gtk.main_quit) 
     self.scrolled_window.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) 

     self.scrolled_window.add(self.local_file_treeview) 
     self.window.add(self.scrolled_window) 

     self.local_file_treeview.show() 
     self.scrolled_window.show() 
     self.window.show() 

if __name__ == '__main__': 
    local_file_treeview_test = LocalFileTreeViewTest() 
    gtk.main() 

ich 4096 immer als Größe und 1293898432,0 als mtime (wie kann ich Format, das ?) Wie könnte ich die richtigen Werte bekommen?

Vielen Dank.

+0

Das nächste Mal, versuchen Sie den Code zum Teil Refactoring, dass Sie Schwierigkeiten ist zu geben und geben nur, dass ein Teil davon. –

+0

ok, vielen Dank! – thom

Antwort

6

Ändern os.stat(path) zu os.stat(complete_path), es ist wieder stat derselbe Pfad, der für jede Datei übergeben wird.

Und Sie können diese Epoche Zeitstempel in ein time Objekt mit time.localtime() (oder time.gmtime())

+0

hat es funktioniert! vielen Dank. – thom

+0

@thom können Sie Ihren eigenen Ruf und mir helfen, indem Sie die Antwort dann akzeptieren :) (klicken Sie auf das Häkchen neben meinem Beitrag) –

Verwandte Themen