【发布时间】:2018-02-19 03:39:28
【问题描述】:
我有如下的linux命令:
find /data/*/hr/ -printf "%f: %p: %u: %g %m (%M) \n"
如何在python子进程中使用check_output
我尝试了下面的方法,但没有工作
file_name = "/data/*/%s/" % (filename)
get_perm = check_output(["find", file_name, "-printf", '\"%f: %p: %u: %g %m (%M) \n\"'])
我得到的错误:
find: ‘/data/*/hr/’: No such file or directory
Traceback (most recent call last):
File "handover.py", line 90, in <module>
get_perm = check_output(["find", file_name, "-printf", '\"%f: %p: %u: %g %m (%M) \n\"'])
File "/usr/lib64/python2.7/subprocess.py", line 573, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['find', '/data/*/hr/', '-printf', '"%f: %p: %u: %g %m (%M) \n"']' returned non-zero exit status 1
【问题讨论】:
-
-printf后面少了一个逗号 -
你有输出吗?您是否收到错误消息(即
CalledProcessError?)。如果它因为不喜欢-printf"%f: %p:...参数而被丢弃,它应该提出一些问题 -
Python 还将字符串中的
\n翻译成文字换行符,当find得到它时这可能会很奇怪。您还可以通过使用'字符来包装字符串文字来避免转义"字符。 -
编辑帖子并提供输出
标签: python linux unix subprocess