我一直在做一些脚本,我需要通过计算目录中的所有当前文件然后使用%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)
答案 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)
*披露:我是反感的作者。