Python搜索目录,列出文件的基本名称,没有扩展名

时间:2013-02-06 04:31:04

标签: python file printing directory

我想知道是否还有我可以修改我的代码只发布文件的基本名称,而不是包括扩展名的整个文件..我是python的新手,所以我不太了解,我不想修改某些内容并让它完全破坏。

import glob
import os
os.chdir( "C:/headers" )

txt = open( 'C:/files.txt', 'w' )

for file in glob.glob( "*.h" ):
    with open( file ) as f:
        contents = f.read()
        if 'struct' in contents:
            txt.write( "%s\n"%file )
txt.close()

基本上,它所做的是搜索头文件的目录,如果它在文件中有结构字符串,它将在txt文件中打印文件。但是,当我运行它时,txt文件打开时会列出所有文件,但是我希望它只列出文件的基本名称,我不需要.h的结尾。

请帮助,谢谢!

3 个答案:

答案 0 :(得分:3)

root, ext = os.path.splitext(file)
name = os.path.basename(root)

root将包含给定文件名的完整路径,直到扩展名之前的句点,name将只是没有前导路径的文件名。

答案 1 :(得分:1)

也许这会有所帮助:

import glob
import os
import re
os.chdir( "C:/headers" )

txt = open( 'C:/files.txt', 'w' )

for file in glob.glob( "*.h" ):
    with open( file ) as f:
        contents = f.read()    [...]
        if 'struct' in contents:
            txt.write( "%s\n"% re.sub('\.h$', '', file) )
txt.close()
祝你好运!

答案 2 :(得分:0)

仅一行...,对于在给定搜索目录中找到的具有所请求文件扩展名的文件,返回没有任何文件扩展名的找到的文件!!

Found_BaseFile_Names= [(f.split('.'))[0] for f in os.listdir(SearchDir) if f.endswith('.txt')]