ich eine mehrzeilige Zeichenfolge haben:yaml.dump Zugabe unerwünschte Zeilenumbrüche in mehrzeiligen Strings
>>> import credstash
>>> d = credstash.getSecret('alex_test_key', region='ap-southeast-2')
Um die Rohdaten zu sehen (erste 162 Zeichen):
>>> credstash.getSecret('alex_test_key', region='ap-southeast-2')[0:162]
u'-----BEGIN RSA PRIVATE KEY-----\nMIIEogIBAAKCAQEA6oySC+8/N9VNpk0gJS7Gk8vn9sYN7FhjpAQnoHRqTN/Oaiyx\nxk2AleP2vXpojA/DHldT1JO+o3j56AHD+yfNFFeYvgWKDY35g49HsZZhbyCEAB45\n'
Und:
>>> print d[0:162]
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA6oySC+8/N9VNpk0gJS7Gk8vn9sYN7FhjpAQnoHRqTN/Oaiyx
xk2AleP2vXpojA/DHldT1JO+o3j56AHD+yfNFFeYvgWKDY35g49HsZZhbyCEAB45
Ich schreibe in eine YAML-Datei:
>>> import yaml
>>> with open('foo.yaml', 'w') as f:
... yaml.dump(d, f, default_flow_style=False, explicit_start=True)
...
Jetzt sieht es wie folgt aus:
$ head -5 foo.yaml
--- !!python/unicode '-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA6oySC+8/N9VNpk0gJS7Gk8vn9sYN7FhjpAQnoHRqTN/Oaiyx
xk2AleP2vXpojA/DHldT1JO+o3j56AHD+yfNFFeYvgWKDY35g49HsZZhbyCEAB45
das heißt jede Zeile zwei Zeilenumbrüche hat.
Nun, wenn ich es zurück in einen String gelesen Ich sehe, dass alle in dem Round-Trip in Ordnung sind: (. Ich verstehe nicht, warum aber)
>>> with open('foo.yaml', 'r') as f:
... d = yaml.load(f)
...
>>> print d[0:162]
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEA6oySC+8/N9VNpk0gJS7Gk8vn9sYN7FhjpAQnoHRqTN/Oaiyx
xk2AleP2vXpojA/DHldT1JO+o3j56AHD+yfNFFeYvgWKDY35g49HsZZhbyCEAB45
Mein wirkliches Problem ist, Wenn Menschen diese YAML-Datei lesen, nehmen sie wahrscheinlich an, dass mein Programm die Formatierung der privaten Schlüsseldatei durchbrochen hat.
Gibt es eine Möglichkeit, yaml.dump zu verwenden, um etwas ohne die zusätzlichen Zeilenvorschubzeichen auszugeben?
Auch Code hinzugefügt, wie dies in PyYAML für die erste Option zu tun ist. Fertig aktualisiert, zurück zur Arbeit. – Anthon
Nun, vielen Dank noch einmal - das ist eine wirklich gute Referenz für die nächste Person, die dieses Problem lösen muss. –