Python 如何将子流程对象传递给数组 我需要将subprocess对象传递给数组,以便处理路径的内容 这是我的密码

Python 如何将子流程对象传递给数组 我需要将subprocess对象传递给数组,以便处理路径的内容 这是我的密码,python,object,hadoop,subprocess,Python,Object,Hadoop,Subprocess,在“/file/path”下,内容如下: id1名称1位置1配置单元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”,那么如果我需要将内容传递给数组,我该怎么办呢?

在“/file/path”下,内容如下: id1名称1位置1配置单元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中这样做吗? 谢谢


好的,那么来自命令
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']

注意这是一种很有技巧的方法,但它应该完成您试图完成的任务。

好的,因此来自命令
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']

注意这是一种很有技巧的方法,但它应该做到您想要达到的目的。

顺便说一句,我的python版本是2.6,所以我不能使用check\u输出模块我认为
path.append(result)
不返回任何可能是您获取的原因的内容
您是在尝试将参数数组传递给子流程,还是实际尝试将子流程的执行结果附加到数组?我正在尝试将子流程的执行结果附加到数组,因此我可以处理数组的内容。好的,我不确定您在给出的示例中是否使用示例代码,但我看到的一个问题是:
python p=path.append(result)
path.append没有返回值,因此赋值将p设置为None.btw,我的python版本是2.6,所以我不能使用check_输出模块I think
path.append(result)
不返回任何可能是您获取的原因的内容
您是在尝试将参数数组传递给子流程,还是实际尝试将子流程的执行结果附加到数组?我正在尝试将子流程的执行结果附加到数组,因此,我可以处理数组的内容。好的,我不确定您在给出的示例中是否使用了示例代码,但我看到的一个问题是:
python p=path.append(result)
path.append没有返回值,因此赋值将p设置为None。嗨,阿奎尔,上面的代码只是将“/file/path”作为列表打印出来。我要打印的是路径中的内容,而不是路径的名称。我能够在我想要的部分附近确定内容字符串的列表。。但还没有…@Michelle我不知道你在说什么。是要打印特定路径中的文件内容,还是要打印特定路径下的文件名?我对上面的代码进行了编辑,但下面是我的简单示例hadoop集群的输出,我只是为这个示例设置的:>>>路径['/user/root/input/file1.txt','/user/root/input/file2.txt']您的hdfs目录在/file/path下有任何文件吗?你能给我一个输出应该是什么样的例子吗?谢谢!它非常接近,我只需要从结果中获取时间戳来做进一步的操作!谢谢嗨,阿奎尔,你上面的代码刚刚打印出“/文件/路径”列表。我要打印的是路径中的内容,而不是路径的名称。我能够在我想要的部分附近确定内容字符串的列表。。但还没有…@Michelle我不知道你在说什么。是要打印特定路径中的文件内容,还是要打印特定路径下的文件名?我对上面的代码进行了编辑,但下面是我的简单示例hadoop集群的输出,我只是为这个示例设置的:>>>路径['/user/root/input/file1.txt','/user/root/input/file2.txt']您的hdfs目录在/file/path下有任何文件吗?你能给我一个输出应该是什么样的例子吗?谢谢!它非常接近,我只需要从结果中获取时间戳来做进一步的操作!谢谢