使用Python

时间:2015-08-01 20:56:53

标签: python windows path

我试图在Windows上找到完整的真实路径,基于其中包含*字符的路径(这似乎与正则表达式类似)。

例如,如果在Windows控制台中我执行:

cd C:\\Windows\\Program Files\\MySWv1*\\bin

上述路径扩展为:

C:\\Windows\\Program Files\\MySWv1.90\\bin

然后成功执行cd命令。

但是,如果在Python(2.7)中我尝试执行以下操作:

import os
my_path = 'C:\\Windows\\Program Files\\MySWv1*\\bin'
os.path.exists(my_path)

返回False

如何让上述脚本返回True

1 个答案:

答案 0 :(得分:1)

我找到了解决方案here。它基于import os import shutil import polib os_locale = '' translations_directory = '/absolute/path/to/your/translations' # choose a locale that isn't already in translations_directory test_locale = 'en_GB' def setUp(self): mo_file_path = os.path.join( translations_directory, test_locale, 'LC_MESSAGES', 'messages.mo' ) mo = polib.MOFile() entry = polib.MOEntry( msgid=u'We need this text here', msgstr='My favourite colour is grey' ) mo.append(entry) mo.save(mo_file_path) # modify our locale for the duration of this test os_locale = os.environ.pop('LANG', 'en') os.environ['LANG'] = test_locale def tearDown(self): # restore our locale os.environ['LANG'] = os_locale shutil.rmtree(os.path.join(translations_directory, test_locale)) def test_get_some_text(self): self.assertEqual(get_some_text(), u'My favourite colour is grey') 模块:

glob

实际上,glob.glob会解释路径并用一个或更多字符串替换任何通配符(例如import os import glob my_path = glob.glob('C:\\Windows\\Program Files\\MySWv1*\\bin')[0] os.path.exists(my_path) ),从而产生列表匹配它们的路径。

这意味着,在生产代码中,您应始终考虑*生成多个路径的可能性,并在必要时执行某些操作来管理此规则。