Ich habe einige Befehle in einer Datei, die ich in Python lese und mit subprocess.Popen ausführe. Wenn Sie die Methode splitlines() ausführen, hängt die Anzahl der produzierten Zeilen von der Breite meines Terminalbildschirms ab. Die Befehle in der Datei sind:Python-Splitlinien führen zu Änderungen aufgrund der Bildschirmgröße des Terminals?
CREATE EXTERNAL TABLE tableforview (name string, dob string) STORED AS PARQUET LOCATION 'location';
Es sind keine Zeilenumbrüche in der Datei; Es ist alles in einer Zeile getippt.
hivep = subprocess.Popen("beeline -u 'connectionstring' --force=true --outputformat=csv2 --showWarnings=false -f hivetest", stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
(output, err) = hivep.communicate()
hivequeryList = []
hivequery = ""
for line in output.splitlines():
print(line)
Allerdings, wenn ich die Ausgabe von Teilungslinien() -Methode Zeile für Zeile zu drucken, erhalte ich zwei Linien oder drei Zeilen je nachdem, wie groß mein Terminal-Bildschirm ist.
Ich lese die Trennlinien in ein Wörterbuch. Was ich erwarten würde ist, dass der Schlüssel des Wörterbuchs die gesamte create-Abfrage und den Wert enthält, der das Ergebnis enthält. Aber was geschieht, ist die Abfrage wird immer abgeschnitten, wie so
{"CREATE EXTERNAL TABLE tableforview (name string, dob string) STORED AS PARQUE" : "T LOCATION 'location';"}
Und die Stelle, an der die Grenzänderungen erfolgen je nachdem, wie breit mein Terminal-Bildschirm ist.
Ich weiß nicht, warum meine Terminal-Bildschirmbreite beim Lesen aus einer Datei wichtig sein sollte. Würde jede Einsicht schätzen.
Möglicherweise gibt es einige Umgebungsvariablen, die die Terminalbreite bestimmen. Daher versucht der Prozess, den Sie gerade öffnen, möglicherweise, seine Ausgaben entsprechend zu formatieren. Vielleicht versuchen Sie 'stdout =' und 'stdin =' Parameter zu verwenden, wenn Sie 'Popen' verwenden? –
Können Sie die erwartete Ausgabe und was wird tatsächlich gedruckt werden? –
Ich verwende stdout und stdin Parameter in Popen. Hat die erwartete Ausgabe gepostet. – covfefe