Dumping ich folgendes Testprogramm habe:automatisch lange Strings verkürzen, wenn sie mit hübschem Druck
from random import choice
d = { }
def data(length):
alphabet = 'abcdefghijklmnopqrstuvwxyz'
res = ''
for _ in xrange(length):
res += choice(alphabet)
return res
# Create the test data
for cnt in xrange(10):
key = 'key-%d' % (cnt)
d[key] = data(30)
def pprint_shorted(d, max_length):
import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(d)
pprint_shorted(d, 10)
Derzeit ist der Ausgang so etwas wie:
{ 'key-0': 'brnneqgetvanmggyayppxevwcnxvue',
'key-1': 'qjzrklrdkykililenwcyhaexuylgub',
'key-2': 'ayddiaxhvgxpszutnjdwlgojqaluhr',
'key-3': 'rmjpzxrmbogezorigkycqhpsctinzq',
'key-4': 'botfczymszkzwuiecyarknnrvwavnr',
'key-5': 'norifblhtvfnwblcyeipjmteznylfy',
'key-6': 'tiiubgdwxnogdmbafvnujbwpfdopjl',
'key-7': 'badgwbrrqunivylutbxqkaeuctrykt',
'key-8': 'wulrfkqfqqecxmscayzdbatyispwtu',
'key-9': 'gzlwfvjrevlyvbmrvuisnyhhbbwtdd'}
In meinen Produktionsdatum, manchmal die Saiten wirklich lang (mehrere tausend Zeichen, kommen von base64
kodierten Anlagen zum Beispiel), und ich möchte nicht, dass meine Protokolle auffüllen. Ich möchte so etwas wie:
{ 'key-0': 'brnneqgetv...',
'key-1': 'qjzrklrdky...',
'key-2': 'ayddiaxhvg...',
'key-3': 'rmjpzxrmbo...',
'key-4': 'botfczymsz...',
'key-5': 'norifblhtv...',
'key-6': 'tiiubgdwxn...',
'key-7': 'badgwbrrqu...',
'key-8': 'wulrfkqfqq...',
'key-9': 'gzlwfvjrev...'}
Das heißt, die String-Werte in der dict mit einer Länge von>max_length
muss durch Auslassungszeichen ersetzt werden. Gibt es eine eingebaute Unterstützung in pretty print
dafür, oder muss ich eine Kopie des Diktats erstellen, indem ich es manuell gehe und die Zeichenfolgen selbst kürze?