2013-02-06 30 views
0

我想知道是否有反正我可以修改我的代碼只發布文件的基本名稱,而不是包括擴展名的整個文件..我是新來的python,所以我不太瞭解,而且我不想修改某些內容並將其徹底打破。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。

請幫忙,謝謝!

回答

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

祝你好運!

+0

太棒了,謝謝!這很好。 :) – chakolatemilk

+0

@chakolatemilk - 你有權力刪除評論(我不能告訴你我刪除了多少不正確的評論)。只需點擊在評論中移動光標時顯示的小灰色「x」(當您的光標放在它上面時它會變成紅色),它會消失 - 沒有人(除了版主)將能夠看到你愚蠢的錯誤:) – mgilson

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

root將包含給定文件名起來,以其中週期將延長之前的整個路徑,name只會是沒有完整路徑的文件名。

相關問題