Dies ist ein partieller Code, der ermitteln können soll, ob ein Parameter in einigen .c-Dateien nicht verwendet wird oder nicht.ValueError beim Aufruf einer Methode
So zuerst, es findet einen Parameternamen und speichert es als theParam
und dann searchAndValueExtract
genannt wird, wo theParam als Suchwort verwendet wird, für Parameter mit identischen Namen zu suchen (und dann ihre Werte zu lesen)
import os
savedValue = ""
compareValue = ""
theParam = ""
usedParameters = list()
equalValueCounter = 0
parameterCounter = 0
emptyline = ""
def searchAndValueExtract(theParam, compareValue, parameterCounter, savedValue):
# when theParam has a value
# this method will be called to find an identical parameter and then grab it's value for comparison
for path, compdirs, compfiles in os.walk('C:/PATH'):
for compfile in compfiles:
if compfile.endswith('.c'):
with open(os.path.join(path, compfile), 'r') as r:
for line in r:
if '=' in line and theParam in line:
savedValue = value(row, line, savedValue, statements, cur)
compareValue = savedValue
parameterCounter += 1
return compareValue
return parameterCounter
for root, dirs, files in os.walk('C:/PATH'):
for cFile in files:
if cFile.endswith('.c'):
with open(os.path.join(root, cFile), 'r') as this:
for row in this:
if '=' in row and row != emptyline:
theParam = takeTheParam(row, theParam)
savedValue = value(row, savedValue, statements, cur, line)
while theParam not in usedParameters: # Has the param already been checked?
safeValue = savedValue
compareValue, parameterCounter = \
searchAndValueExtract(theParam, compareValue, parameterCounter, savedValue)
if safeValue == compareValue:
equalValueCounter += 1
continue
else:
usedParameters.append(theParam)
break
else:
break
Wenn ich den Fehler kompilieren
File "C:/PATH/ParamChecker.py", line 82, in <module>
searchAndValueExtract(theParam, compareValue, parameterCounter, savedValue)
ValueError: need more than 1 value to unpack
ich herum gesucht haben, aber nichts hat mir geholfen, es zu verstehen, oder ich bin einfach nicht begreifen, wie die Lösung in meinem Fall umgesetzt werden könnten.
Dies passiert, wenn Sie 'a, b = fn()' eingeben, aber 'fn()' gibt nur einen Wert zurück. Z.B. 'compareValue, parameterCounter = searchAndValueExtract (...)' – khelwood
@khelwood - Bitte lesen Sie meinen Kommentar unten. –