1、os.walk()
import os我就不写了,代码和执行的效果如下:
path='/${absolute_path}/缺陷预测/tera-promise-dataset'
for root,dirs,files in os.walk(path):
print("root:",root)
print()
print("dirs:",dirs)
print()
print("files:",files)
print()
结果:
root: /${absolute_path}/缺陷预测/tera-promise-dataset
dirs: ['prop', 'lucene', 'ivy', 'camel', 'xerces', 'velocity', 'xalan', 'poi', 'forrest', 'log4j', 'jedit', 'synapse']
files: ['arc.csv', 'szybkafucha.csv', 'skarbonka.csv', 'ant-1.7.csv', 'kalkulator.csv', '.DS_Store', 'systemdata.csv', 'serapion.csv', 'nieruchomosci.csv', 'workflow.csv', 'tomcat.csv', 'redaktor.csv', 'pdftranslator.csv', 'e-learning.csv', 'zuzel.csv', 'wspomaganiepi.csv', 'README.txt', 'sklebagd.csv', 'berek.csv', 'termoproject.csv', 'intercafe.csv', 'ckjm.csv']
root: /${absolute_path}/缺陷预测/tera-promise-dataset/prop
dirs: []
files: ['prop-4.csv', 'prop-5.csv', 'prop-6.csv', 'prop-3.csv', 'prop-1.csv']
#后面的都是重复
……
比较懒,直接用tera-PROMISE数据集展示结果了。os.walk()是一层一层遍历过去的,如果是需要对单个文件操作,需要把root和文件名组合在一起,代码如下:
#打印当前路径下所有文件的绝对路径
for root,dirs,files in os.walk(path):
# print("root:",root)
# print()
# print("dirs:",dirs)
# print()
# print("files:",files)
# print()
for f in files:
file_path=os.path.join(root,f)
print(file_path)
结果可以自己运行看下。
2、os.listdir()
在使用这个函数的时候,更适合写成递归函数
def listdir(path,data):
for f in os.listdir(path):
file_path=os.path.join(path,f)
#判断是不是文件使用os.path.file()
if os.path.isdir(file_path):
listdir(file_path,data)
else:
if os.path.splitext(f)[1]=='.csv':
print(file_path)
这段代码也能达到上面的效果。