我对python还很陌生,而且还处于基础学习的水平。最近,我尝试编写一个脚本,根据输入文本文件中提供的数字生成新文件夹。创建这些文件夹后,我希望同时将文件复制到所有这些文件夹中。我可以通过打字
echo equil{1..x} | xargs -n 1 cp *.txt *在终点站,而且工作正常。这里x是我工作目录中的文件夹数。但是我关心的是使它自动化,即从脚本调用它,这样用户就不需要每次在终端中键入这一行。所以我才试过这个
sub2 = subprocess.call(['echo', 'equil{1..x}', '|', 'xargs', '-n', '1', 'cp', '*.txt *'])有人能指点我并指出错误吗?实际上我没有收到任何错误,而是打印了这个。
equil{1..x} | xargs -n 1 cp *.txt *在终端中执行完其余的脚本。
发布于 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。
https://stackoverflow.com/questions/31075564
复制相似问题