我试图.c使用Python 查找目录中的所有文件.
我写了这个,但它只是将所有文件归还给我 - 而不仅仅是.c文件.
import os
import re
results = []
for folder in gamefolders:
for f in os.listdir(folder):
if re.search('.c', f):
results += [f]
print results
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得.c文件?
dei*_*eif 34
尝试将内循环更改为这样的东西
results += [each for each in os.listdir(folder) if each.endswith('.c')]
Run Code Online (Sandbox Code Playgroud)
Mac*_*arz 26
试试"glob":
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
Run Code Online (Sandbox Code Playgroud)
有一个更好的解决方案,直接使用正则表达式,它是标准库fnmatch处理文件名模式的模块。(另请参阅glob模块。)
编写一个辅助函数:
import fnmatch
import os
def listdir(dirname, pattern="*"):
return fnmatch.filter(os.listdir(dirname), pattern)
Run Code Online (Sandbox Code Playgroud)
并按如下方式使用它:
result = listdir("./sources", "*.c")
Run Code Online (Sandbox Code Playgroud)
for _,_,filenames in os.walk(folder):
for file in filenames:
fileExt=os.path.splitext(file)[-1]
if fileExt == '.c':
results.append(file)
Run Code Online (Sandbox Code Playgroud)
吻
# KISS
import os
results = []
for folder in gamefolders:
for f in os.listdir(folder):
if f.endswith('.c'):
results.append(f)
print results
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47259 次 |
| 最近记录: |