コード例 #1
0
    def testFileBasicInfo(self):
        attr = win32file.GetFileAttributes(self.__filename)
        f = win32file.CreateFile(self.__filename, win32file.GENERIC_READ, 0, None,
                                 win32con.OPEN_EXISTING, 0, None)
        self.__handle = f
        ct, at, wt = win32file.GetFileTime(f)

        # bug #752: this throws ERROR_BAD_LENGTH (24) in x86 binaries of build 221
        basic_info = win32file.GetFileInformationByHandleEx(f, win32file.FileBasicInfo)

        self.assertEqual(ct, basic_info['CreationTime'])
        self.assertEqual(at, basic_info['LastAccessTime'])
        self.assertEqual(wt, basic_info['LastWriteTime'])
        self.assertEqual(attr, basic_info['FileAttributes'])
コード例 #2
0
ファイル: main.py プロジェクト: yncat/falcon
    def ShowDetail(self, elem):
        d = views.objectDetail.Dialog()
        d.Initialize()
        d.add(_("名前"), elem.basename)
        d.add(_("パス"), elem.fullpath)
        if isinstance(elem, browsableObjects.File) or isinstance(elem, browsableObjects.Stream):
            if elem.size >= 0:
                d.add(_("サイズ"), misc.ConvertBytesTo(elem.size, misc.UNIT_AUTO, True))
                d.add(_("サイズ(バイト)"), elem.size)
                if isinstance(elem, browsableObjects.Folder):
                    d.add(_("内容"), _("ファイル数: %d サブディレクトリ数: %d") % (elem.fileCount, elem.dirCount))
            elif isinstance(elem, browsableObjects.Folder):
                d.add(_("サイズ"), d.CALCURATING)
                d.add(_("サイズ(バイト)"), d.CALCURATING)
                d.add(_("内容"), d.CALCURATING)
                param = {'lst': [(0, elem.fullpath)], 'callback': d.setDirCalcResult}
                d.setTask(workerThreads.RegisterTask(workerThreadTasks.DirCalc, param))
        if isinstance(elem, browsableObjects.File):
            d.add(_("作成日時"), elem.creationDate.strftime("%Y/%m/%d(%a) %H:%M:%S"))
            d.add(_("更新日時"), elem.modDate.strftime("%Y/%m/%d(%a) %H:%M:%S"))
            d.add(_("属性"), elem.longAttributesString)
            d.add(_("種類"), elem.typeString)
            if not elem.shortName == "":
                d.add(_("短い名前"), elem.shortName)
            else:
                d.add(_("短い名前"), _("なし"))

            h = win32file.CreateFile(
                elem.fullpath,
                0,
                win32file.FILE_SHARE_READ | win32file.FILE_SHARE_WRITE,
                None,
                win32file.OPEN_EXISTING,
                win32file.FILE_FLAG_BACKUP_SEMANTICS,  # これがないとディレクトリを開けない
                0)
            info = win32file.GetFileInformationByHandleEx(h, win32file.FileStandardInfo)
            if info:
                d.add(_("消費ディスク領域"),
                      misc.ConvertBytesTo(info["AllocationSize"], misc.UNIT_AUTO, True) + " (" + str(info["AllocationSize"]) + " bytes)")
                tmp = ""
                if info["DeletePending"]:
                    tmp += _("削除予約済 ")
                if info["NumberOfLinks"] > 1:
                    tmp += _("ハードリンクにより他の %d 箇所から参照" % (info["NumberOfLinks"] - 1))
                if tmp == "":
                    tmp = _("なし")
                d.add(_("追加情報"), tmp)

        if isinstance(elem, browsableObjects.Drive):
            if elem.free >= 0:
                d.add(_("フォーマット"), fileSystemManager.GetFileSystemObject(elem.letter))
                if elem.total > 0:
                    d.add(_("空き容量"), "%s (%s%%)" % (misc.ConvertBytesTo(elem.free, misc.UNIT_AUTO, True), elem.free * 100 // elem.total))
                else:
                    d.add(_("空き容量"), misc.ConvertBytesTo(elem.free, misc.UNIT_AUTO, True))
                d.add(_("総容量"), misc.ConvertBytesTo(elem.total, misc.UNIT_AUTO, True))
            else:
                d.add(_("フォーマット"), _("未挿入"))
            d.add(_("種類"), elem.typeString)
        if isinstance(elem, browsableObjects.NetworkResource) and elem.address != "":
            d.add(_("IPアドレス"), elem.address)
        d.Show()
        return