以递归方式获取文件夹和子文件夹下的所有文件,没有子文件夹本身的路径

Getting all files under a folder and subfolders in a recursive manner, without the path of the subfolders itself

我想递归列出文件夹及其所有子文件夹下的所有文件的完整路径。有办法吗?好像文件分2层的话,代码可以这样写,

import os


folderPATH = r'C:\Users\Arman\Desktop\Cosmology\Articles'
filePATHS = [x[2] for x in os.walk(folderPATH)]

for i in filePATHS:
    for j in i:
        print(j)

打印

Astrophysical Constants And Parameters.pdf
desktop.ini
Physics Latex Manuel.pdf
Spactimes.pdf
A parametric reconstruction of the cosmological jerk from diverse observational data.pdf
A Thousand Problems in Cosmology Horizons.pdf
An Almost Isotropic CM Temperature Does Not Imply An Almost Isotropic Universe.pdf
Big Bang Cosmology - Review.pdf
desktop.ini
Expanding Confusion common misconceptions of cosmological horizons and the superluminal expansion of the universe.pdf
Hubble Radius.pdf
Is the Universe homogeneous.pdf
LCDM and Mond.pdf
Near galaxy clusters.pdf
The Cosmological Constant and Dark Energy.pdf
The mass of the Milky Way from satellite dynamic.pdf
The Status of Cosmic Topology after Planck Data.pdf
An upper limit to the central density of dark matter haloes from consistency with the presence of massive central black holes.pdf
Dark Matter - Review.pdf
Dark Matter Accretion into Supermassive Black Holes.pdf
desktop.ini
Andrew H. Jaffe - Cosmology - Imperial College Lecture Notes - Thermodynamics and Particle Physics.pdf
Big Bang Nucleosynthesis.pdf
Claus Grupen - Astroparticle Physics - The Early Universe.pdf
Daniel Baumann - Cosmology - Mathematical Tripos III - Thermal History.pdf
desktop.ini
James Rich - Fundamentals of Cosmology - The Thermal History of the Universe.pdf
Lars Bergström, Ariel Goobar - Cosmology and Particle Astrophysics -  Thermodynamics in the Early Universe.pdf  
Steven Weinberg - Cosmology - The Early Universe.pdf
Andrei Linde - On the problem of initial conditions for inflation.pdf
...

我想要一个产生相同结果的函数但具有递归逻辑和完整路径。这样对于 n 嵌套文件夹,我可以找到路径。我需要这样的东西,

import os

def get_all_filePATHs(folderPATH):
    ...
    return get_all_filePATHs()

folderPATH = r'C:\Users\Arman\Desktop\Cosmology\Articles'
print(get_all_filePATHs(folderPATH))

请注意,我只对 文件的完整路径感兴趣,而不是子文件夹的路径 ,正如您从上面的示例中看到的那样。

os.walk() 递归到所有子目录。每次迭代返回的第一个元素是目录的路径,您将其与文件名连接以获得文件的完整路径。

def get_all_filePaths(folderPath):
    result = []
    for dirpath, dirnames, filenames in os.walk(folderPath):
        result.extend([os.path.join(dirpath, filename) for filename in filenames])
    return result

使用Pathlib

from pathlib import Path
# set main directory
folderPATH=Path('Оплата')
# loop over subdirs and files
print([Path(folderPATH.resolve().parent, the_path) for the_path in folderPATH.rglob("*")])