os.popen()。readlines的奇怪行为

时间:2019-01-29 22:58:24

标签: python

我必须编写一个脚本,该脚本应该与python 2/3兼容。 我需要使用输入法,它应该接受不带引号的输入。 Python 3为此仅支持raw_input 而Python 2仅支持该输入

我编写了一种检查python版本并使用相应输入法的方法(如下所示)

问题是:

output = os.popen('python --version').readlines()

返回

Python 2.7.15rc1
[]

因此,尽管打印了行蜂,但该列表实际上是空的

如果我更改文本要求git版本

output = os.popen('git --version').readlines()

它返回

['git version 2.17.1\n']

应该。

这种方法怎么会如此奇怪? 有人知道如何解决吗?

我试图在python 2和3上运行它。

def input_23_comp(text=''):    
    output = os.popen('python --version').readlines()
    output = output[0].strip() 
    if (output[0:8] == 'Python 2'):
        raw_input(text)
    else:
        input(text)

1 个答案:

答案 0 :(得分:2)

val kafkaDatademostr = spark.readStream.format("kafka").option("kafka.bootstrap.servers","fffff.dl.ggg.com:8023").option("subscribe","dfo").option("kafka.security.protocol","SASL_PLAINTEXT").load val interval=kafkaDatademostr.select(col("value").cast("string"),col("timestamp")).alias("csv").select("csv.*") 将版本信息打印到stderr。您正在捕获标准输出。您需要捕获stderr,或将stderr重定向到stdout。

但是,如果要检查正在运行的Python版本,则运行python --version是错误的方法。您通过该命令调用的版本甚至可能不是您正在运行的版本。使用python --version