def get_by_path(self, path): cur = self.con.cursor() cur.execute("SELECT * FROM fileinfo WHERE path = ?", (path,)) rows = cur.fetchall() if len(rows) > 1: raise Exception("duplicates in database") elif len(rows) == 0: return None else: row = rows[0] fileinfo = FileInfo(path) # rowid = row[0] fileinfo.kind = row[1] fileinfo.path = row[2] fileinfo.dev = row[3] fileinfo.ino = row[4] fileinfo.mode = row[5] fileinfo.nlink = row[6] fileinfo.uid = row[7] fileinfo.gid = row[8] fileinfo.rdev = row[9] fileinfo.size = row[10] fileinfo.blksize = row[11] fileinfo.blocks = row[12] fileinfo.atime = row[13] fileinfo.ctime = row[14] fileinfo.mtime = row[15] fileinfo.time = row[16] return fileinfo
def main(): fileinfos = [] with zipfile.ZipFile(sys.argv[1], 'r') as zp: for entry in zp.infolist(): # print(entry, entry.filename, entry.date_time, entry.flag_bits, entry.CRC, entry.file_size) info = FileInfo(entry.filename) info.kind = 'file' info.size = entry.file_size info.blob = BlobInfo(entry.file_size, crc32=entry.CRC) info.mtime = int(datetime.datetime(*entry.date_time).timestamp()) * 10**9 fileinfos.append(info) for info in fileinfos: print(info.json())