Variablennamen aus Inhalten einer Liste festlegen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

mit

globals()['Variablenname'] = Wert

z.b.:

>>> NeueVariable
Traceback (most recent call last):
  File "<pyshell#18>", line 1, in <module>
    NeueVariable
NameError: name 'NeueVariable' is not defined
>>> VariablenName = input('Wie soll deine Variable heißen? ')
Wie soll deine Variable heißen? NeueVariable
>>> VariablenWert = input('Was für einen Wert soll deine Variable haben? ')
Was für einen Wert soll deine Variable haben? abc123
>>> VariablenName
'NeueVariable'
>>> VariablenWert
'abc123'
>>> globals()[VariablenName] = VariablenWert
>>> VariablenName
'NeueVariable'
>>> NeueVariable
'abc123'
>>> 
Woher ich das weiß:eigene Erfahrung

Ohne die Liste gesehen zu haben, sowas sollte mit awk funktionieren.


Dideldumdei1234 
Fragesteller
 17.10.2021, 16:01

Ok danke. Was genau ist AWK?

Also das hier wäre zB ein Beispiel für einen ähnlichen Code:

#!/usr/bin/env python3
import os
import yaml
from loguru import logger

config_file = os.path.join('config.yml')
cfg = None

with open(config_file, "r", encoding="utf-8") as ymlfile:
	cfg = yaml.load(ymlfile, Loader=yaml.FullLoader)
if not cfg:
	logger.error("Konfigurationsdatei config.yml konnte nicht gelesen werden.")
fruits = []
for p in cfg['fruit']:
  fruits.append(p)
  # Wie kann ich jetzt hier Varibalen deklarieren, die denselben Namen wie die Einträge der Liste

   Und die dazugehörende yml-Datei wäre die hier:

fruit:
  - apple
  - banana

Wäre sehr lieb, wenn du mir irgendein Codebeispiel mal gibst, damit ich deinen Gedanken nachvollziehen kann.

0
HarryXXX  17.10.2021, 16:55
@Dideldumdei1234

Was soll heraus kommen?

fruits = [ apple, banana, cherry, blackberry,....]

Sowas?

0
HarryXXX  17.10.2021, 18:20
@Dideldumdei1234

ok ein ein beispiel:

grep ' - ' xxx.yml | awk -F' ' '{ print $2 }
das sollte daraus eine liste mit nur den "Früchten" machen,
die kann man dann ja nehmen und eine komma-separierte liste draus machen und in einen befehl umwandeln.

allerdings, wenn das nur einmal sein muss, dann geht das auch mit ein paar wenigen VI befehlen und fertig.

0