我在一個文件中有一些命令,我在python中讀取並使用subprocess.Popen執行。運行splitlines()方法時,生成的行數取決於終端屏幕的寬度。該文件中的命令是:Python拆分結果根據終端屏幕大小而變化?
CREATE EXTERNAL TABLE tableforview (name string, dob string) STORED AS PARQUET LOCATION 'location';
有文件中沒有換行;它全部輸入一行。
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)
但是,當我逐行打印splitlines()方法的輸出時,根據終端屏幕的大小,我得到兩行或三行。
我正在閱讀拆分成字典。所以我期望的是字典的關鍵字包含整個創建查詢以及包含結果的值。但正在發生的事情是查詢被截斷,像這樣
{"CREATE EXTERNAL TABLE tableforview (name string, dob string) STORED AS PARQUE" : "T LOCATION 'location';"}
而在這取決於我的終端屏幕有多寬是截止發生變化的位置。
我不知道爲什麼我的終端屏幕寬度應該從文件讀取時重要。希望有任何見解。
可能有一些環境變量決定了終端寬度,因此您打開的進程可能會嘗試根據這些進程格式化它的輸出。也許在使用'Popen'時嘗試使用'stdout ='和'stdin ='參數? –
您可以發佈預期的輸出和實際正在打印的內容嗎? –
我在Popen中使用stdout和stdin參數。發佈預期的輸出。 – covfefe