我想知道是否还有我可以修改我的代码只发布文件的基本名称,而不是包括扩展名的整个文件..我是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的结尾。
请帮助,谢谢!
答案 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')]