2017-03-30 5 views
1

Ich versuche, Shell-Code mit Python zu drucken, aber es fügt einen \x0a Terminator hinzu. Gibt es eine Möglichkeit, ohne Terminator zu drucken?Python drucken Bytes ohne Terminator

# cat test.py 
print(b'\x41\x41\x41\x41') 

# python test.py |xxd -g1 
0000000: 41 41 41 41 0a         AAAA. 

# python test.py | wc 
    1  1  5 

Antwort

1

0x0A ist eine neue Zeile (LF, \ n), die Python automatisch zum Ausdrucken von Anweisungen hinzufügt.

Verwenden Sie für Python 3 print(..., end="").

In Python 2, beenden Sie die print-Anweisung mit einem Komma in etwa so:

print "abc", 

jedoch Python noch versuchen, eine neue Zeile zu drucken, wenn es austritt. Sie können besser sys.stdout.write() verwenden.

+0

Danke. Für Python 2 könntest du bitte ein Beispiel geben? Ich habe versucht, mit einem Komma auf eine andere Art und Weise zu enden, aber ich kann nicht scheinen, es richtig zu machen, lol. Ich denke, dass Sie die neue Druckfunktion importieren können, obwohl 'von __future__ import print_function' und print wird sich wie python3 verhalten. – Nitro

+0

Scheinbar möchte Py2 einen Zeilenumbruch drucken, wenn es beendet wird. Versuchen Sie: 'print 'abc", ',' print "def" '- es wird keine neue Zeile geben (der Platz kommt vom zweiten Druck). Ich habe meine Antwort korrigiert. – DimeCadmium

+0

(Im Allgemeinen ist Drucken in Python 2 für den menschlichen Konsum gedacht - ich würde vermuten, dass es versucht, Ihr Terminal konsistent zu halten (Drucken Sie die Eingabeaufforderung am Anfang der Zeile) – DimeCadmium