我有这段代码:
> >>> 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系统命令读取。
答案 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。使用它作为网络搜索中的术语,您应该很容易在线找到合适的代码。如果您在实施其中一种方法时遇到问题,请不要犹豫。