Ich lese den Quellcode testinfra
im Ansible Modul. Ich fand die folgenden Codezeilen:Wann ist chr (ord (c)) ungleich c in Python?
# Ansible return an unicode object but this is bytes ...
# A simple test case is:
# >>> assert File("/bin/true").content == open("/bin/true").read()
stdout_bytes = b"".join((chr(ord(c)) for c in out['stdout']))
stderr_bytes = b"".join((chr(ord(c)) for c in out['stderr']))
es über stdout
iteriert, erhält die ganzzahligen Ordinalzahl jeden Zeichen und wandelt sie zurück in einem Ein-Zeichen-String. Aber was ist der Sinn?
Python-Version spielt wahrscheinlich hier eine Rolle. In Python2 nimmt ord Unicode-Zeichen als Eingabe, aber chr geht nur von int nach ASCII, so dass dort vielleicht etwas Seltsames ausgenutzt werden könnte? – JETM
Es wäre hilfreich, darauf hinzuweisen, wo im Code diese Zeile angezeigt wurde. Ohne Kontext können wir nicht viel tun. Ich nehme an, Sie beziehen sich auf den Code im Modul [Ansible] (https://github.com/philpep/testinfra/blob/55e4ed92db8cc9fe118fe3da465010169825b0d6/testinfra/backend/ansible.py#L40) ... der Kommentar dort hätte nützlich sein können. –
@JeffMercado Ja, es ist im ansible Backend-Quellcode. Ich habe den Kommentar gelesen, aber warum benutzt der Autor das? Ist es gleich out ['stdout']. Encode ('ascii') '? – satoru