从文件中的一行读取特定字符串

时间:2019-07-02 16:46:23

标签: python file

我的文件看起来像这样:

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 个答案:

答案 0 :(得分:1)

您可以使用内置函数os.path.basename()从路径中仅获取文件名:

{{1}}

答案 1 :(得分:0)

尝试一下

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

答案 2 :(得分:0)

尝试一下:您可以使用re.search从路径中查找文件名

echo 'test1:'  .$data['atacadista'];
echo 'test2:'  .$atacadista;

O / P:

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)