Jou*_*son 6 python rm wildcard python-envoy
我正在使用Python和Envoy.我需要删除目录中的所有文件.除了一些文件,目录为空.在终端中,这将是:
rm /tmp/my_silly_directory/*
Run Code Online (Sandbox Code Playgroud)
常识要求在使节中,这转化为:
r = envoy.run('rm /tmp/my_silly_directory/*')
Run Code Online (Sandbox Code Playgroud)
然而:
r.std_err -> "rm: cannot remove `/tmp/my_silly_directory/*': No such file or directory"
Run Code Online (Sandbox Code Playgroud)
当然,在这种情况下有使用特使的替代方案,我只是想知道为什么它不起作用.
有线索吗?
在UNIX上,由shell来解释通配符*.如果你执行一个程序并将一个参数*直接传递给程序 - 这可能就是在这里做的 - 那么你会得到一个像你所看到的错误.rm假设它*是一个文件名,实际上,它实际上可以创建这样一个文件.
一种解决方案可能是执行shell并让它代表您执行命令,例如
r = envoy.run('sh -c "rm /tmp/my_silly_directory/*"')
Run Code Online (Sandbox Code Playgroud)
shell将解释*之前的调用rm.
| 归档时间: |
|
| 查看次数: |
850 次 |
| 最近记录: |