我在文件中有一些命令,我在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';"}
截止发生的位置会根据终端屏幕的宽度而变化。
我不知道为什么我的终端屏幕宽度在从文件中读取时会很重要。非常感谢任何见解。
答案 0 :(得分:1)
当您使用print
时,您的屏幕宽度用于打印您的内容,如果稍后调整大小,则打印已经完成了计算。