我试图在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
?
答案 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)
),从而产生列表匹配它们的路径。
这意味着,在生产代码中,您应始终考虑*
生成多个路径的可能性,并在必要时执行某些操作来管理此规则。