![](/img/trans.png)
[英]How to fix ValueError: not enough values to unpack (expected 3, got 1) in Python?
[英]How to fix ValueError: not enough values to unpack (expected 2, got 1) in python?
我想监视我的docker容器ram的使用。 现在,我在网上找到了一个脚本,该脚本生成具有如下统计信息的txt文件:
LOG_FILE="/volume1/docker/docker-logs.txt"
while true;
do
sleep 10m
docker stats --format "{{.Name}}, {{.MemUsage}}" --no-stream >> $LOG_FILE
#echo "-" >> $LOG_FILE
done
使用Synology NAS在启动时运行它。 工作正常,我得到了这个文件:
-
Python3, 46.42MiB / 150MiB
hassio, 160.8MiB / 3.855GiB
Jacket, 255.4MiB / 3.855GiB
Radarrnodebug, 96.87MiB / 3.855GiB
Sonarrnodebug, 112.8MiB / 3.855GiB
Ombii, 212.2MiB / 3.855GiB
watchtower, 11.48MiB / 50MiB
-
Python3, 46.42MiB / 150MiB
hassio, 68.34MiB / 3.855GiB
Jacket, 258.3MiB / 3.855GiB
Radarrnodebug, 101.8MiB / 3.855GiB
Sonarrnodebug, 114.8MiB / 3.855GiB
Ombii, 212.4MiB / 3.855GiB
watchtower, 11.48MiB / 50MiB
-
Python3, 46.42MiB / 150MiB
hassio, 71.06MiB / 3.855GiB
Jacket, 262.7MiB / 3.855GiB
Radarrnodebug, 102.2MiB / 3.855GiB
Sonarrnodebug, 124.1MiB / 3.855GiB
Ombii, 217.7MiB / 3.855GiB
watchtower, 11.48MiB / 50MiB
-
Python3, 46.42MiB / 150MiB
hassio, 81.38MiB / 3.855GiB
Jacket, 262.7MiB / 3.855GiB
Radarrnodebug, 102.5MiB / 3.855GiB
Sonarrnodebug, 125.1MiB / 3.855GiB
Ombii, 217.6MiB / 3.855GiB
watchtower, 11.48MiB / 50MiB
-
Python3, 46.42MiB / 150MiB
hassio, 76.55MiB / 3.855GiB
Jacket, 269.2MiB / 3.855GiB
Radarrnodebug, 103.3MiB / 3.855GiB
Sonarrnodebug, 123.8MiB / 3.855GiB
Ombii, 219MiB / 3.855GiB
watchtower, 11.48MiB / 50MiB
-
Python3, 46.42MiB / 150MiB
hassio, 77.52MiB / 3.855GiB
Jacket, 268.4MiB / 3.855GiB
Radarrnodebug, 106.2MiB / 3.855GiB
Sonarrnodebug, 117.8MiB / 3.855GiB
Ombii, 213.1MiB / 3.855GiB
watchtower, 11.48MiB / 50MiB
-
现在,要使其成为一个不错的PNG,我需要以下内容:
from pip._internal import main
main(["install", "matplotlib", "numpy","pandas"])
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
log_path = "/stats/docker-logs.txt"
with open(log_path) as f:
raw_data = f.readlines()
nrows = 8
n = len(raw_data) // nrows
data = []
for i in range(n):
start = i * nrows
end = start + nrows - 1
d = raw_data[start:end]
datum = {}
datum['i'] = i
for line in d:
name, stats = line.strip().split(',')
stats = float(stats.split('/')[0].strip()[:-3])
datum[name] = stats
data.append(datum)
data = pd.DataFrame(data)
data['time (hour)'] = data['i'] * 10 / 60
ax = data.drop(columns='i').set_index('time (hour)').plot()
ax.set_ylabel('RAM Usage (MiB)')
ax.figure.savefig('/stats/plot.png')
在beginnen中工作正常,但突然失去作用,我收到以下错误:
Traceback (most recent call last):
File "/stats/genstat.py", line 22, in <module>
name, stats = line.strip().split(',')
ValueError: not enough values to unpack (expected 2, got 1)
做了一些调试,发现
var i
变为0,所以什么也没做(因为必须跳过“-”字符),发生了什么事,我该如何解决? 我已经尝试了很多操作,删除了“-”字符,以小数位表示变化,但没有什么真正重要的(对于meeeee)
希望能有所帮助
这条线
name, stats = line.strip().split(',')
之所以失败,是因为您的输入文件中有一行没有逗号。 最后很可能是空白行。 做
columns = line.strip().split(',')
if len(columns) == 2:
name, stats = columns
else:
print("Expected name and stats, got", columns)
尝试这个:
if line.count(',') != 1:
continue
name, stats = line.strip().split(',')
这是更pythonic的:
if ',' not in line:
continue
name, stats = line.strip().split(',')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.