2015-10-23 3 views
0

Хорошо, у меня есть функция, которая возвращает питона эту EDIT [TK диалог открытия файла]:Python: Извлечение данных из первого набора котировок?

<open file u'C:/WINDOWS/system32/calc.exe', mode 'rb' at 0x0218B390> 

Я пишу отладчик в ТЗ, и у меня есть отладчик открытым и запустить файл. Как я могу извлечь только что внутри первого набора кавычек? ('C:/WINDOWS/system32/calc.exe'). Место внутри кавычек изменится, поэтому я не могу просто указать местоположение, которое я хочу.

+0

Можете ли вы показать нам код функции питона? – blackmamba

+0

Сделайте запрос на цитату, затем выполните поиск следующей цитаты. Храните оба результата в виде переменных. Нарежьте строку, чтобы получить то, что находится между ними. – BlivetWidget

ответ

3

это выглядит, как вы распечатав FileObject открытого файла. если это так: а FileObject также имеет атрибут name, который просто возвращает путь к файлу

with open('/tmp/test.txt', 'w') as file: 
    print(file) 
    print(file.name) 
# <_io.TextIOWrapper name='/tmp/test.txt' mode='w' encoding='UTF-8'> 
# /tmp/test.txt 
0

без регулярных выражений

data = '<open file u\'C:/WINDOWS/system32/calc.exe\', mode \'rb\' at 0x0218B390>' 
print data.split('\'')[1] 

с регулярным выражением

import re 

data = '<open file u\'C:/WINDOWS/system32/calc.exe\', mode \'rb\' at 0x0218B390>' 
print re.findall('\'(.*?)\'', data)[0] 
-1
st = "<open file u'C:/WINDOWS/system32/calc.exe', mode 'rb' at 0x0218B390>".split()[2] 
import ast 
col2 = ast.literal_eval(st)[0] 
print(col2) 
C:/WINDOWS/system32/calc.exe 
Смежные вопросы