如何读取star(*)作为系统命令

时间:2015-12-23 09:20:10

标签: python

我有这段代码:

> >>> import os
> >>> os.chdir('/u01/APPLTOP/instance/domains/*.oracleoutsourcing.com/ICDomain/servers/IncentiveCompensationServer_1/logs')
> Traceback (most recent call last):   File "<stdin>", line 1, in ?
> OSError: [Errno 2] No such file or directory:
> '/u01/APPLTOP/instance/domains/*.oracleoutsourcing.com/ICDomain/servers/IncentiveCompensationServer_1/logs'
> >>>

请告诉我如何在python中将asterisk(*)作为Linux系统命令读取。

2 个答案:

答案 0 :(得分:3)

模拟shell path expansion&#39; *&#39; (以及其他glob特殊字符),您可以使用glob模块:

import glob
glob_pattern = '/u01/APPLTOP/instance/domains/*.oracleoutsourcing.com/ICDomain/servers/IncentiveCompensationServer_1/logs'
dir_paths = glob.glob(glob_pattern)

现在,假设上述结果只有一个匹配(否则,它没有任何意义&#34; chdir&#34;它),你可以这样做:

dir_path, = dir_paths
os.chdir(dir_path)

如果您没有匹配或多次匹配,则上述分配将失败。

答案 1 :(得分:0)

首先,这不是&#34;命令&#34;,更不用说&#34; Linux系统命令&#34;。相反,shell(基本上是启动其他程序的工具)将使用命令行,根据其规则替换$FOO之类的变量和*之类的通配符,然后构建一个参数向量,然后传递给调用程序。

现在,正如评论中已经提到的,星号替换被称为globbing。使用它作为网络搜索中的术语,您应该很容易在线找到合适的代码。如果您在实施其中一种方法时遇到问题,请不要犹豫。