Skip to content

Commit 38890f4

Browse files
committed
Small update
1 parent 731a670 commit 38890f4

1 file changed

Lines changed: 53 additions & 13 deletions

File tree

pyfoxfile/pyfoxfile.py

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9121,6 +9121,37 @@ def ftype_to_str(ftype):
91219121
# Default to "file" if unknown
91229122
return mapping.get(ftype, "file")
91239123

9124+
def calc_compression(fsize, fcsize, fmt="ratio"):
9125+
"""
9126+
fsize = original size (bytes)
9127+
fcsize = compressed size (bytes) or 0/None if not compressed
9128+
fmt:
9129+
- "ratio" -> "4.00:1"
9130+
- "percent" -> "75.0%"
9131+
- "both" -> "4.00:1 (75.0%)"
9132+
"""
9133+
try:
9134+
fsize = int(fsize or 0)
9135+
fcsize = int(fcsize or 0)
9136+
except (TypeError, ValueError):
9137+
return "-" # unknown
9138+
9139+
# Not compressed or invalid
9140+
if fsize <= 0 or fcsize <= 0 or fcsize >= fsize:
9141+
# If fcsize==fsize, ratio is 1:1; if fcsize>fsize, "expanded"
9142+
if fsize > 0 and fcsize == fsize:
9143+
return "1.00:1" if fmt == "ratio" else ("0.0%" if fmt == "percent" else "1.00:1 (0.0%)")
9144+
return "-" # treat as not compressed / unknown
9145+
9146+
ratio = fsize / fcsize
9147+
savings = (1.0 - (fcsize / fsize)) * 100.0
9148+
9149+
if fmt == "ratio":
9150+
return f"{ratio:.2f}:1"
9151+
if fmt == "percent":
9152+
return f"{savings:.1f}%"
9153+
return f"{ratio:.2f}:1 ({savings:.1f}%)"
9154+
91249155
def FoxFileListFiles(infile, fmttype="auto", filestart=0, seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, saltkey=None, seektoend=False, verbose=False, newstyle=False, returnfp=False):
91259156
if(isinstance(infile, dict)):
91269157
listarrayfileslist = [infile]
@@ -9129,7 +9160,7 @@ def FoxFileListFiles(infile, fmttype="auto", filestart=0, seekstart=0, seekend=0
91299160
else:
91309161
if(infile != "-" and not hasattr(infile, "read") and not hasattr(infile, "write") and not isinstance(infile, bytes)):
91319162
infile = RemoveWindowsPath(infile)
9132-
listarrayfileslist = FoxFileToArray(infile, fmttype, filestart, seekstart, seekend, True, False, False, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
9163+
listarrayfileslist = ArchiveFileToArray(infile, fmttype, filestart, seekstart, seekend, True, False, False, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
91339164
if(not listarrayfileslist):
91349165
return False
91359166
for listarrayfiles in listarrayfileslist:
@@ -9163,14 +9194,23 @@ def FoxFileListFiles(infile, fmttype="auto", filestart=0, seekstart=0, seekend=0
91639194
if(len(fgprint) <= 0):
91649195
fgprint = listarrayfiles['ffilelist'][lcfi]['fgid']
91659196
if(newstyle):
9166-
VerbosePrintOut(ftype_to_str(listarrayfiles['ffilelist'][lcfi]['ftype']) + "\t" + listarrayfiles['ffilelist'][lcfi]['fcompression'] + "\t" + str(
9167-
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + printfname)
9197+
compratio = calc_compression(listarrayfiles['ffilelist'][lcfi]['fsize'], listarrayfiles['ffilelist'][lcfi]['fcsize'], "percent")
9198+
if(compratio=="-"):
9199+
compratio = "\t"
9200+
else:
9201+
compratio = "\t"+compratio
9202+
if(listarrayfiles['ffilelist'][lcfi]['fsize']==0):
9203+
compressprint = str("0").rjust(15) + "\t"
9204+
else:
9205+
compressprint = str(listarrayfiles['ffilelist'][lcfi]['fcsize']).rjust(15) + "\t"
9206+
VerbosePrintOut(ftype_to_str(listarrayfiles['ffilelist'][lcfi]['ftype']) + "\t" + listarrayfiles['ffilelist'][lcfi]['fcompression'] + compratio + "\t" + str(
9207+
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + compressprint + printfname)
91689208
else:
91699209
ts_ns = listarrayfiles['ffilelist'][lcfi]['fmtime']
91709210
sec, ns = divmod(int(ts_ns), 10**9)
91719211
dt = datetime.datetime.utcfromtimestamp(sec).replace(microsecond=ns // 1000)
9172-
VerbosePrintOut(PrintPermissionString(listarrayfiles['ffilelist'][lcfi]['fmode'], listarrayfiles['ffilelist'][lcfi]['ftype']) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9173-
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + " " + dt.strftime('%Y-%m-%d %H:%M') + " " + printfname)
9212+
VerbosePrintOut(PrintPermissionString(listarrayfiles['ffilelist'][lcfi]['fmode'], listarrayfiles['ffilelist'][lcfi]['ftype']) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9213+
listarrayfiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + dt.strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
91749214
lcfi = lcfi + 1
91759215
if(returnfp):
91769216
return listarrayfiles['fp']
@@ -9345,8 +9385,8 @@ def TarFileListFiles(infile, formatspecs=__file_format_multi_dict__, verbose=Fal
93459385
fgprint = member.gname
93469386
if(len(fgprint) <= 0):
93479387
fgprint = member.gid
9348-
VerbosePrintOut(PrintPermissionString(ffullmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9349-
member.size).rjust(15) + " " + datetime.datetime.utcfromtimestamp(member.mtime).strftime('%Y-%m-%d %H:%M') + " " + printfname)
9388+
VerbosePrintOut(PrintPermissionString(ffullmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9389+
member.size).rjust(15) + "\t" + datetime.datetime.utcfromtimestamp(member.mtime).strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
93509390
lcfi = lcfi + 1
93519391
if(returnfp):
93529392
return listarrayfiles['fp']
@@ -9503,8 +9543,8 @@ def ZipFileListFiles(infile, verbose=False, returnfp=False):
95039543
fgprint = fgname
95049544
if(len(fgprint) <= 0):
95059545
fgprint = str(fgid)
9506-
VerbosePrintOut(PrintPermissionString(fmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(member.file_size).rjust(
9507-
15) + " " + datetime.datetime.utcfromtimestamp(int(get_unix_timestamp_zip(zipinfo))).strftime('%Y-%m-%d %H:%M') + " " + printfname)
9546+
VerbosePrintOut(PrintPermissionString(fmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(member.file_size).rjust(
9547+
15) + "\t" + datetime.datetime.utcfromtimestamp(int(get_unix_timestamp_zip(zipinfo))).strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
95089548
lcfi = lcfi + 1
95099549
if(returnfp):
95109550
return listarrayfiles['fp']
@@ -9636,8 +9676,8 @@ def RarFileListFiles(infile, verbose=False, returnfp=False):
96369676
fgprint = fgname
96379677
if(len(fgprint) <= 0):
96389678
fgprint = str(fgid)
9639-
VerbosePrintOut(PrintPermissionString(fmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9640-
member.file_size).rjust(15) + " " + member.mtime.strftime('%Y-%m-%d %H:%M') + " " + printfname)
9679+
VerbosePrintOut(PrintPermissionString(fmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9680+
member.file_size).rjust(15) + "\t" + member.mtime.strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
96419681
lcfi = lcfi + 1
96429682
if(returnfp):
96439683
return listarrayfiles['fp']
@@ -9749,8 +9789,8 @@ def SevenZipFileListFiles(infile, verbose=False, returnfp=False):
97499789
fgprint = fgname
97509790
if(len(fgprint) <= 0):
97519791
fgprint = str(fgid)
9752-
VerbosePrintOut(PrintPermissionString(fmode, ftype) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
9753-
fsize).rjust(15) + " " + member.creationtime.strftime('%Y-%m-%d %H:%M') + " " + printfname)
9792+
VerbosePrintOut(PrintPermissionString(fmode, ftype) + "\t" + str(fuprint) + "/" + str(fgprint) + "\t" + str(
9793+
fsize).rjust(15) + "\t" + member.creationtime.strftime('%Y-%m-%d %H:%M') + "\t" + printfname)
97549794
lcfi = lcfi + 1
97559795
if(returnfp):
97569796
return listarrayfiles['fp']

0 commit comments

Comments
 (0)