У меня есть файл, который выглядит так:

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])

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

0
Metio_1993 2 Июл 2019 в 19:46

3 ответа

Лучший ответ

Вы можете использовать встроенную функцию {{X0} } чтобы получить только имя файла из пути:

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))
1
zwirbeltier 2 Июл 2019 в 16:52

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

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']
0
shaik moeed 2 Июл 2019 в 17:09

Попробуйте это: вы можете использовать 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
Naresh 3 Июл 2019 в 03:12