无法将文件大小从 Python 中的列表框输出到标签 3
Trouble outputing file size to a label from a listbox in Python 3
我正在使用 os.path.getsize()
将文件的大小输出到标签。文件路径存储在列表框中。该函数有效,但它以位为单位输出文件大小,因此我编写了以下内容以转换为更合适的单位,现在它仅以 TB 为单位显示。它正在执行所有 if
语句,无论条件是否为真。
activeFile = FilesList.get(ACTIVE)
fileSize = os.path.getsize(activeFile)
fileSizeStr = str(fileSize) + ' Bits'
if fileSize > 8:
fileSize = fileSize / 8
fileSizeStr = str(fileSize) + ' Bytes'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str(fileSize) + ' KB'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str(fileSize) + ' MB'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str (fileSize) + ' GB'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str(fileSize) + ' TB'
你的代码中有几个问题,
- 您总是重新分配
fileSizeStr
。您需要连接新值。
- 您需要检查
fileSize
是否大于或等于 1024,而不是更小。
- 新的
fileSize
应该是第一次计算的余数,而不是它的结果。
此外,恕我直言,从较大的检查会更好。
#constants
TB = 2**43
GB = 2**33
MB = 2**23
KB = 2**13
BYTES = 2**3
#some test value here
fileSize = 8
#empty string to be filled and shown later
fileSizeStr = ""
#calculations
if fileSize >= TB:
fileTB = fileSize / TB
fileSize = fileSize % TB
fileSizeStr += str(fileTB) + 'TB '
if fileSize >= GB:
fileGB = fileSize / GB
fileSize = fileSize % GB
fileSizeStr += str(fileGB) + 'GB '
if fileSize >= MB:
fileMB = fileSize / MB
fileSize = fileSize % MB
fileSizeStr += str(fileMB) + 'MB '
if fileSize >= KB:
fileKB = fileSize / KB
fileSize = fileSize % KB
fileSizeStr += str(fileKB) + 'KB '
if fileSize >= BYTES:
fileB = fileSize / BYTES
fileSize = fileSize % BYTES
fileSizeStr += str(fileB) + 'Byte(s) '
fileSizeStr += str(fileSize) + 'Bit(s)'
print fileSizeStr
我正在使用 os.path.getsize()
将文件的大小输出到标签。文件路径存储在列表框中。该函数有效,但它以位为单位输出文件大小,因此我编写了以下内容以转换为更合适的单位,现在它仅以 TB 为单位显示。它正在执行所有 if
语句,无论条件是否为真。
activeFile = FilesList.get(ACTIVE)
fileSize = os.path.getsize(activeFile)
fileSizeStr = str(fileSize) + ' Bits'
if fileSize > 8:
fileSize = fileSize / 8
fileSizeStr = str(fileSize) + ' Bytes'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str(fileSize) + ' KB'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str(fileSize) + ' MB'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str (fileSize) + ' GB'
if fileSize < 1024:
fileSize = fileSize / 1024
fileSizeStr = str(fileSize) + ' TB'
你的代码中有几个问题,
- 您总是重新分配
fileSizeStr
。您需要连接新值。 - 您需要检查
fileSize
是否大于或等于 1024,而不是更小。 - 新的
fileSize
应该是第一次计算的余数,而不是它的结果。
此外,恕我直言,从较大的检查会更好。
#constants
TB = 2**43
GB = 2**33
MB = 2**23
KB = 2**13
BYTES = 2**3
#some test value here
fileSize = 8
#empty string to be filled and shown later
fileSizeStr = ""
#calculations
if fileSize >= TB:
fileTB = fileSize / TB
fileSize = fileSize % TB
fileSizeStr += str(fileTB) + 'TB '
if fileSize >= GB:
fileGB = fileSize / GB
fileSize = fileSize % GB
fileSizeStr += str(fileGB) + 'GB '
if fileSize >= MB:
fileMB = fileSize / MB
fileSize = fileSize % MB
fileSizeStr += str(fileMB) + 'MB '
if fileSize >= KB:
fileKB = fileSize / KB
fileSize = fileSize % KB
fileSizeStr += str(fileKB) + 'KB '
if fileSize >= BYTES:
fileB = fileSize / BYTES
fileSize = fileSize % BYTES
fileSizeStr += str(fileB) + 'Byte(s) '
fileSizeStr += str(fileSize) + 'Bit(s)'
print fileSizeStr