首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用脚本调用xargs

如何使用脚本调用xargs
EN

Stack Overflow用户
提问于 2015-06-26 14:17:58
回答 2查看 1.9K关注 0票数 0

我对python还很陌生,而且还处于基础学习的水平。最近,我尝试编写一个脚本,根据输入文本文件中提供的数字生成新文件夹。创建这些文件夹后,我希望同时将文件复制到所有这些文件夹中。我可以通过打字

代码语言:javascript
复制
echo equil{1..x} | xargs -n 1 cp *.txt *

在终点站,而且工作正常。这里x是我工作目录中的文件夹数。但是我关心的是使它自动化,即从脚本调用它,这样用户就不需要每次在终端中键入这一行。所以我才试过这个

代码语言:javascript
复制
sub2 = subprocess.call(['echo', 'equil{1..x}', '|', 'xargs', '-n', '1', 'cp', '*.txt *'])

有人能指点我并指出错误吗?实际上我没有收到任何错误,而是打印了这个。

代码语言:javascript
复制
equil{1..x} | xargs -n 1 cp *.txt *

在终端中执行完其余的脚本。

EN

Stack Overflow用户

回答已采纳

发布于 2015-06-26 14:29:13

如果要向子进程的stdin/stdout发送数据,则必须使用subprocess.Popen。您必须为每个可执行文件Popen一个子进程,例如,在您的示例中,一个用于echo,另一个用于xargs

在文档中有一个例子:https://docs.python.org/2/library/subprocess.html#replacing-shell-pipeline

另一个在这里:Call a shell command containing a 'pipe' from Python and capture STDOUT

但是,与运行echo生成某些行不同,您可以在python中直接将它们写入进程stdin。

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

https://stackoverflow.com/questions/31075564

复制
相关文章

相似问题

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