无法将列表中的长字符串与列表中的短字符串连接起来
Can't concatenate long string in list with short string in list
我写了一个 Python 脚本来从日志文件中提取硬盘信息。
我正在使用的日志文件格式错误。
因此我像这样一起搜索所有值:
lineDict = dict([(line) for line in enumerate(hd.readlines())])
x = json.dumps(lineDict, indent = 1)
y = re.findall(r'Caption=.*[c-zC-Z]:|FileSystem=NTFS|Size=\d+|FreeSpace=\d+',x,re.M)
我所有的免费 Space 和大小(总大小)值都是字节,所以我必须循环遍历它们,将它们与其他值分开,以便快速将它们转换为整数,然后再将这些字节值转换为人类可读的形式。 (MB、GB 等...):
我正在弄乱那些 Free Space 和 Total Size 值,以便在屏幕上很好地显示输出,管道分隔符用于 Total Size 和 Free Space:
getBytes = re.findall(r'\d+',cropHdds)
getBytes = [int(x) for x in getBytes]
valsL = []
for vals in getBytes:
hVals = convertBytes(vals)
valsL.append(hVals)
hrFixed = json.dumps(valsL, indent = 2)
hrDisplay = replaceMany(hrFixed.strip(),[("\n",""),('"',''),("'",""),(']',''),('[','')])
a = re.sub("\s+", "", hrDisplay)
b = textwrap.fill(a, 14)
c = b.replace(","," | ")
hrValsF = c.center(60)
最后,我有两个列表:
驱动器 L:
['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL:
['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
我希望将这些值组合在一起,如下例所示:
C:,52.7GB | 119.7GB, D: 22.9GB | 80.0GB, E:'25.2GB | 50.0GB
我有另一个搜索 "File System Type" 的变量,我可以知道我只有 3 个 NTFS 硬盘(C、D、E)。
在键盘上搜索并敲了很长时间之后。
我尝试了很多排序方法,例如使用奇怪的列表推导将这些字符串转换为元组或字典,最终导致内存泄漏,还尝试了一些创造性的切片符号,不知何故我无法正确处理,因此我寻求帮助以克服这个问题障碍,我觉得我工作太努力了,他们一定是一个解决方案。
预先感谢您的帮助。
您可以使用列表理解同时遍历两个列表
DriveL=['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL=['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
Combined=[(x,y) for (x,y) in zip(DriveL,DriveInfoL)]
>>>Combined
>>>[('C:', '52.7GB | 119.7GB'),
('D:', '22.9GB | 80.0GB'),
('E:', '25.2GB | 50.0GB')]
此代码段将创建一个字典,其中键是驱动器号,值是内存:
DriveL = ['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL = ['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
Drive_dict = {}
for i in range(3):
Drive_dict[DriveL[i]] = DriveInfoL[i]
只考虑前 3 个条目。如果只想使用 NTFS 驱动器,则必须找到一种方法来确定 DriveL
中的哪些条目是 NTFS 驱动器。
我写了一个 Python 脚本来从日志文件中提取硬盘信息。 我正在使用的日志文件格式错误。 因此我像这样一起搜索所有值:
lineDict = dict([(line) for line in enumerate(hd.readlines())])
x = json.dumps(lineDict, indent = 1)
y = re.findall(r'Caption=.*[c-zC-Z]:|FileSystem=NTFS|Size=\d+|FreeSpace=\d+',x,re.M)
我所有的免费 Space 和大小(总大小)值都是字节,所以我必须循环遍历它们,将它们与其他值分开,以便快速将它们转换为整数,然后再将这些字节值转换为人类可读的形式。 (MB、GB 等...): 我正在弄乱那些 Free Space 和 Total Size 值,以便在屏幕上很好地显示输出,管道分隔符用于 Total Size 和 Free Space:
getBytes = re.findall(r'\d+',cropHdds)
getBytes = [int(x) for x in getBytes]
valsL = []
for vals in getBytes:
hVals = convertBytes(vals)
valsL.append(hVals)
hrFixed = json.dumps(valsL, indent = 2)
hrDisplay = replaceMany(hrFixed.strip(),[("\n",""),('"',''),("'",""),(']',''),('[','')])
a = re.sub("\s+", "", hrDisplay)
b = textwrap.fill(a, 14)
c = b.replace(","," | ")
hrValsF = c.center(60)
最后,我有两个列表: 驱动器 L:
['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL:
['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
我希望将这些值组合在一起,如下例所示:
C:,52.7GB | 119.7GB, D: 22.9GB | 80.0GB, E:'25.2GB | 50.0GB
我有另一个搜索 "File System Type" 的变量,我可以知道我只有 3 个 NTFS 硬盘(C、D、E)。 在键盘上搜索并敲了很长时间之后。 我尝试了很多排序方法,例如使用奇怪的列表推导将这些字符串转换为元组或字典,最终导致内存泄漏,还尝试了一些创造性的切片符号,不知何故我无法正确处理,因此我寻求帮助以克服这个问题障碍,我觉得我工作太努力了,他们一定是一个解决方案。 预先感谢您的帮助。
您可以使用列表理解同时遍历两个列表
DriveL=['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL=['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
Combined=[(x,y) for (x,y) in zip(DriveL,DriveInfoL)]
>>>Combined
>>>[('C:', '52.7GB | 119.7GB'),
('D:', '22.9GB | 80.0GB'),
('E:', '25.2GB | 50.0GB')]
此代码段将创建一个字典,其中键是驱动器号,值是内存:
DriveL = ['C:', 'D:', 'E:', 'F:', 'G:', 'Z:']
DriveInfoL = ['52.7GB | 119.7GB', '22.9GB | 80.0GB', '25.2GB | 50.0GB']
Drive_dict = {}
for i in range(3):
Drive_dict[DriveL[i]] = DriveInfoL[i]
只考虑前 3 个条目。如果只想使用 NTFS 驱动器,则必须找到一种方法来确定 DriveL
中的哪些条目是 NTFS 驱动器。