【发布时间】:2017-05-24 16:10:05
【问题描述】:
我正在尝试使用 Python 执行此命令:
findSyntax = "find . -maxdepth 2 -name '.config' | cpio -updm ../test1/"
subprocess.Popen(findSyntax.split(' '))
但是这个命令是行不通的。当我执行此命令时,它将开始列出 .config 下的所有文件(不仅仅是 .config)。超出 maxdepth 2 的目录...这是一个很长的列表。
我在这里错过了什么!有人可以指出吗?谢谢。
注意:我也尝试过运行subProcess.run,结果相同。我能够使用 os.system() 命令让 find 部分正常工作。
编辑:我只是想澄清一下,此命令会将找到的具有完整目录结构的文件复制到新位置(如有必要,创建子目录)。我在 bash 终端上试过这个命令,它工作正常。但我无法让它与 Python 一起使用。
EDIT2:所以,整个命令适用于
os.system(),但我不知道如何使其适用于subprocess。os.system()应该被弃用,所以我很想用subprocess来找出解决方案。
【问题讨论】:
-
你应该说出你期望发生的事情。
-
你应该剖析一些东西。首先确保您的 find “找到”了您期望它找到的内容 - 当您从命令行手动运行它时!然后:你可能想使用 shlex 模块而不是仅仅拆分你的命令。
-
@GhostCat,我已经用一些细节编辑了这个问题。该命令在 shell 上运行良好。我不知道他的 shlex 模块,但我会谷歌它。
-
检查您的路径。如果您可以通过 bash 运行命令,它应该通过
os.system()运行完全相同
标签: python linux unix subprocess