Python splitlines会根据终端屏幕大小进行更改吗?

时间:2017-02-14 17:12:44

标签: python subprocess

我在文件中有一些命令,我​​在python中读取并使用subprocess.Popen执行。运行splitlines()方法时,生成的行数取决于终端屏幕的宽度。文件中的命令是:

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';"}

截止发生的位置会根据终端屏幕的宽度而变化。

我不知道为什么我的终端屏幕宽度在从文件中读取时会很重要。非常感谢任何见解。

1 个答案:

答案 0 :(得分:1)

当您使用print时,您的屏幕宽度用于打印您的内容,如果稍后调整大小,则打印已经完成了计算。