我有一个文件夹,其中包含许多子文件夹,以及这些子文件夹中的图像。我有遍历文件夹和子文件夹的代码,一次打印出每个图像的名称。我希望所有这些图像名称都存储在单个数组中。如何获得将每个图像名称附加到同一数组的循环?
到目前为止,我仅在Linux或Matlab上看到过类似的解决方案,而在python上却没有。
files = []
#r=root, d=directories, f = files
for r, d, f in os.walk(path):
for face_image in f :
if face_image.endswith("g"): #to get all '.jpg' and all '.png' files
print(face_image)
当我运行上面的循环时,我会打印出所有〜1000个图像名称。但是,当我尝试在循环外打印(face_image)时,仅打印循环中最终图像的名称。我现在这是因为我没有将每个名称附加到数组,但是不确定如何执行此操作?任何帮助将不胜感激!
答案 0 :(得分:2)
使用pathlib和递归glob模式:
from pathlib import Path
file_types = ("jpg", "png")
file_paths = []
for file_type in file_types:
file_paths.extend(Path(".").glob(f"**/*.{file_type}"))
file_names = [file_path.name for file_path in file_paths]
答案 1 :(得分:1)
打印语句后,您可以使用class Complex {
private:
double _real;
double _imag;
public:
Complex();
Complex(double real, double imag);
Complex(const Complex& z);
Complex operator+(const Complex& u) const;
friend Complex & operator+=(Complex &v, const Complex& u);
};
Complex & operator+=(Complex &v, const Complex& u)
{
v._real += u._real;
v._imag += u._imag;
return v;
}
将面部图像添加到列表中。循环完成后,所有有效的图像名称将在列表中供您使用。
答案 2 :(得分:0)
我不确定这是否是一个合法的问题。您需要将文件追加到列表中。
files = []
#r=root, d=directories, f = files
for r, d, f in os.walk(path):
for face_image in f :
if face_image.endswith("g"): #to get all '.jpg' and all '.png' files
print(face_image)
files.append(face_image)
答案 3 :(得分:0)
您可以尝试这样的事情:
files = []
for r, d, f in os.walk(path):
# collect all images
files += [os.path.join(r, file) for file in f]
# filter images
files = [ff for ff in files if ff.endswith('g')]
或更紧凑:
files = []
for r, d, f in os.walk(path):
# collect all images that end with 'g'
files += [os.path.join(r, file) for file in f if file.endswith('g')]