在Python中查找目录中的文件

时间:2015-03-19 05:15:06

标签: python python-3.x data-structures operating-system filesystems

我一直在做一些脚本,我需要通过计算目录中的所有当前文件然后使用%s来访问操作系统以命名图像(在点击时保存Mandelbrot集的每个后续缩放)在调用下面的函数之后在字符串中命名它们,然后添加一个选项以将它们全部删除

我意识到下面将总是抓住文件的绝对路径,但假设我们总是在同一目录中,那么没有简化版本来获取当前工作目录

def count_files(self):
     count = 0
     for files in os.listdir(os.path.abspath(__file__))):
         if files.endswith(someext):
             count += 1
     return count

def delete_files(self):
     for files in os.listdir(os.path.abspath(__file__))):
         if files.endswith(.someext):
             os.remove(files)

3 个答案:

答案 0 :(得分:1)

由于您正在执行.endswith事情,我认为glob模块可能会引起一些兴趣。

以下打印当前工作目录中扩展名为.py的所有文件。不仅如此,它只返回文件名,而不是路径,如你所说:

import glob

for fn in glob.glob('*.py'): print(fn)

输出:

temp1.py
temp2.py
temp3.py
_clean.py

修改:重新阅读您的问题,我不确定您真正询问的是什么。如果您想要一种比

更简单的获取当前工作目录的方法
os.path.abspath(__file__) 

然后是,os.getcwd()

但是,如果您更改脚本中的工作目录(例如,通过os.chdir()os.getcwd()将会更改,而您的方法则不会。

答案 1 :(得分:0)

您可以使用os.path.dirname(path)获取事件path指向的父目录。

def count_files(self):
 count = 0
 for files in os.listdir(os.path.dirname(os.path.abspath(__file__)))):
     if files.endswith(someext):
         count += 1
 return count

答案 2 :(得分:0)

使用antipathy *它会变得更容易:

from antipathy import Path

def count_files(pattern):
    return len(Path(__file__).glob(pattern))

def deletet_files(pattern):
    Path(__file__).unlink(pattern)

*披露:我是反感的作者。