在 Python 中的目录中查找文件
Finding files in directories in Python
我一直在编写一些脚本,我需要访问 os 以通过计算目录中的所有当前文件来命名图像(在单击时保存 Mandelbrot 集的每个后续缩放),然后在调用以下函数后使用 %s 在字符串中命名它们,然后添加一个选项以将它们全部删除
我意识到下面总是会获取文件的绝对路径,但假设我们总是在同一个目录中,是否没有简化版本来获取当前工作目录
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)
既然你在做 .endswith
的事情,我认为 glob
模块可能会有些兴趣。
以下打印当前工作目录中扩展名为.py 的所有文件。不仅如此,它 returns 只有文件名,而不是路径,如您所说:
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()
将会更改,而您的方法不会。
您可以使用 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
使用 antipathy* 它变得更容易一些:
from antipathy import Path
def count_files(pattern):
return len(Path(__file__).glob(pattern))
def deletet_files(pattern):
Path(__file__).unlink(pattern)
*披露:我是反感的作者。
我一直在编写一些脚本,我需要访问 os 以通过计算目录中的所有当前文件来命名图像(在单击时保存 Mandelbrot 集的每个后续缩放),然后在调用以下函数后使用 %s 在字符串中命名它们,然后添加一个选项以将它们全部删除
我意识到下面总是会获取文件的绝对路径,但假设我们总是在同一个目录中,是否没有简化版本来获取当前工作目录
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)
既然你在做 .endswith
的事情,我认为 glob
模块可能会有些兴趣。
以下打印当前工作目录中扩展名为.py 的所有文件。不仅如此,它 returns 只有文件名,而不是路径,如您所说:
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()
将会更改,而您的方法不会。
您可以使用 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
使用 antipathy* 它变得更容易一些:
from antipathy import Path
def count_files(pattern):
return len(Path(__file__).glob(pattern))
def deletet_files(pattern):
Path(__file__).unlink(pattern)
*披露:我是反感的作者。