我正在编写自动化脚本,需要运行命令,命令输出应该作为列表捕获。
例如:
# ls -l | awk '{print $9}' test1 test2
我希望将输出捕获为var = ["test1", "test2"]
等列表。
现在我尝试了这个,但它保存为字符串而不是列表:
# Filter the tungsten services s = subprocess.Popen(["ls -l | awk '{print $9}'"], shell=True, stdout=subprocess.PIPE).stdout service_state = s.read()
如果有人有任何想法,请指导我。
答案 0 :(得分:2)
您可以使用
service_states = s.read().splitlines()
但请注意,这很脆弱:文件名可以包含奇数字符(如空格)。
因此,您可能最好使用os.listdir(path)
,它会为您提供文件名列表。
答案 1 :(得分:0)
您可以根据需要对字符串进行后处理。
string.splitlines()
(https://docs.python.org/2/library/stdtypes.html#str.splitlines)会将字符串分解为行列表。
如果您需要进一步分割结果,可以使用.split()
。
答案 2 :(得分:0)
子流程不需要:
a, d , c = os.walk('.').next()
service_state = d + c