首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python subprocess.Popen与shlex问题

python subprocess.Popen与shlex问题
EN

Stack Overflow用户
提问于 2011-09-24 07:50:14
回答 2查看 1.7K关注 0票数 0

我的子进程命令先搜索它,它只搜索我编写的一个目录(s2),忽略了第一个目录(s1)。其次,我正在读一些python文档,然后就搞糊涂了。

我的代码

代码语言:javascript
复制
def search_entry(self, widget):
            s1 = subprocess.Popen(['find', '/home/bludiescript/tv-shows', '-type', 'f'], shell=False, stdout=subprocess.PIPE)
            s2 = subprocess.Popen(['find', '/media/FreeAgent\ GoFlex\ Drive/tobins-media', '-type', 'f'],  stdin=s1.stdout, shell=False, stdout=subprocess.PIPE)
            s1.stdout.close()
            self.contents = "\n".join(self.list)
            s2.communicate(self.contents)

让我感到困惑的是shlex模块,以及如何在我的代码中使用它来代替subprocess.Popen,以及它是否有意义。

所以像这样的东西会比我的更好吗?

代码语言:javascript
复制
cmd = 'find /media/FreeAgent\ GoFlex\ Drive/tobins-media -type f find /home/bludiescript/tv-shows -type f'
 spl = shlex.split(cmd)
 s1 = subprocess.Popen(spl, stdout=subprocess.PIPE)
 self.contents = "\n".join(self.list)
        s1.communicate(self.contents)

再次感谢您的投入

EN

回答 2

Stack Overflow用户

发布于 2011-09-24 08:00:26

这听起来像是您想要运行一对命令并连接它们的输出:

代码语言:javascript
复制
cmds = [
    'find /media/FreeAgent\ GoFlex\ Drive/tobins-media -type f',
    'find /home/bludiescript/tv-shows -type f'
]

ouput = '\n'.join(subprocess.check_output(shlex.split(cmd)) for cmd in cmds)
票数 2
EN

Stack Overflow用户

发布于 2011-09-24 09:39:14

尝试使用os.walk而不是调用find。这将产生更健壮的代码。下面的代码等同于您第一次调用find

代码语言:javascript
复制
top = '/media/FreeAgent GoFlex Drive/tobins-media'
for dirpath, dirnames, filenames in os.walk(top):
    for filename in filenames:
        print os.path.join(dirpath, filename)

然而,这并没有回答这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7535940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档