如何将子进程对象传递给数组

rsl1atfo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(468)

我需要将subprocess对象传递给数组,以便处理路径的内容。
这是我的密码
在“/file/path”下,内容如下:id1 name1 location1 hive 1 2014-10-01 4:02/file/path

p = subprocess.Popen(["hdfs", "dfs", "-ls", "/file/path"], stdout=subprocess.PIPE)
result = p.communicate()[0]
path = []
p = path.append(result)

但是当我打印p时,它返回“none”,所以如果我需要将内容传递给数组,我能用python做什么呢?谢谢!

11dmarpk

11dmarpk1#

好的,那么从命令输出的屏幕结果 hdfs dfs -ls /some/path 是一根弦。如果您的目的是实际获取文件名,则必须解析该字符串。如果要将这些路径添加到包含路径的数组中,一种廉价的方法是:

import subprocess
base_dir = "/user/root/input"  # NOTE: This is my hdfs path, yours may differ
p = subprocess.Popen(["hdfs", "dfs", "-ls", base_dir], stdout=subprocess.PIPE)
result = p.communicate()[0]
lines = result.splitlines()
paths = [word.strip() for word in ' '.join(line for line in lines).split(' ') if base_dir in word]

输出

print paths

# ['/user/root/input/file1.txt', '/user/root/input/file2.txt']

注意:这是一个黑客的方式做这件事,但它应该做什么,它是你试图完成。

相关问题