2013-11-27 2 views
0

Я пытаюсь открыть файл, используя полный путь, но я не знаю полного имени файла, а всего лишь уникальную строку внутри него.Открытие файла с пути, не зная полного имени файла (python)

i = identifier 
doc = open(r'C:\my\path\*{0}*.txt'.format(i), 'r') 

Теперь очевидно, что это не работает, потому что я пытаюсь использовать подстановочный знак вместе с необработанной строкой. У меня было много проблем в прошлом, пытаясь использовать пути файлов без, предшествующих им с 'r', поэтому я не уверен в том, что вы сможете обработать неполное имя файла. Должен ли я просто забыть строчную нотацию и использовать «\\\\» для пути к файлу?

+0

http://docs.python.org/2/library/glob.html это лучший способ для поиска имен файлов, которые вы не знаете, - 'open' не работает с подстановочными знаками. Кроме того, лучший способ работать с обратными косыми чертами в ваших именах DOS - это использовать 'os.path.join' для создания пути. –

+0

@PeterDeGlopper Что делать, если я просто делаю 'путь = glob.glob (r'path/* identifier * .txt ')' then 'doc = open (путь,' r ')'? – griffsterb

+0

'glob.glob' возвращает возможно пустой список, поэтому вы не можете напрямую открыть его возвращаемое значение. Но 'paths = glob.glob (...); если пути: doc = open (пути [0], 'r') 'в основном правы. Похоже, что 'glob' прощает, какие файловые разделители вы используете. –

ответ

2

Из комментариев вопроса:

import glob 
import os 

i = "identifier" 
basePath = r"C:\my\path" 

filePaths = glob.glob(os.path.join(basePath,'*{0}*.txt'.format(i))) 

# Just open first ocurrence, if any 
if filePaths: 
    print "Found: ", filePaths[0] 
    doc = open(filePaths[0], 'r') 
Смежные вопросы