Чтение определенной строки из строки в файле - PullRequest
0 голосов
/ 02 июля 2019

У меня есть файл, похожий на этот:

face LODRxERROR
{
  source   R/com/int/LRxAMEexception.csv

  contains R/saqf/LAWODRxERROR.ddf
  contains R/bld/LAWODRxERRORtyp.h
  contains R/bld/LAWODRxERRORtyp.hpp

  requires LAWODRxERR
}

В данный момент я могу прочитать конкретную строку и сохранить ее. Но мне нужно быть более конкретным. Вместо того, чтобы читать всю строку. Я хотел бы прочитать только имя файла без каталога. Таким образом, вместо чтения R/bld/LAWODRxERRORtyp.hpp я хотел бы читать только LAWODRxERRORtyp.hpp

Вот мой код на Python:

    with open(file) as scope:
        for line in scope:
            line = line.strip()
            if line.startswith('contains') and line.endswith('.h') or line.endswith('.hpp'):
                scopeFileList.append(line.split()[-1])

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 02 июля 2019

Вы можете использовать встроенную функцию os.path.basename(), чтобы получить только имя файла из пути:

from os.path import basename

with open(file) as scope:
    for line in scope:
        line = line.strip()
        if line.startswith('contains') and line.endswith('.h') or line.endswith('.hpp'):
            path = line.split()[-1]
            scopeFileList.append(basename(path))
0 голосов
/ 03 июля 2019

Попробуйте это: вы можете использовать re.search для поиска имен файлов по пути

with open('new_file.txt') as file:
     for line in file:
             line = line.strip()
             if line.startswith('source') or line.startswith('contains'):
                    file_names = re.search('/(.+?)\/((\w+)\.\w+$\Z)', line).group(2)
                     print(file_names)

O / P:

'LRxAMEexception.csv'
'LAWODRxERROR.ddf'
'LAWODRxERRORtyp.h'
'LAWODRxERRORtyp.hpp'
0 голосов
/ 02 июля 2019

Попробуйте это,

with open("file1.txt", "r") as f:
    data = [line.replace("\n","").split('/')[-1] for line in f.readlines() if '.' in line]

Выход:

print(data)

['LRxAMEexception.csv',
 'LAWODRxERROR.ddf',
 'LAWODRxERRORtyp.h',
 'LAWODRxERRORtyp.hpp']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...