我有一个包含其他目录的目录。这些子目录中的每一个都有我需要绝对路径的文件。例如,假设父目录为/ home / Documents,每个子目录分别为1、2,...,10。我尝试了类似files = [os.path.abspath(f) for d in os.listdir('/home/Documents') for f in os.listdir(d)]
的操作,但得到的结果类似于(一个文件)/home/Documents/file1
(应为/home/Documents/1/file1
)。有没有办法使用其中的子目录来做到这一点?
答案 0 :(得分:1)
使用os.path.join:
root = '/tmp/project'
files = [os.path.join(root, d, f) for d in os.listdir(root) for f in os.listdir(os.path.join(root, d))]
print files
输出:
['/tmp/project/auth/__init__.py', '/tmp/project/controllers/__init__.py']
答案 1 :(得分:0)
在下面尝试此代码:
import os
def find_file_name(path=None):
paths = []
if not path:
path = os.getcwd()
for element in os.listdir(path):
full_path = os.path.join(path, element)
if os.path.isdir(full_path):
paths += find_file_name(path=full_path)
else:
paths.append(full_path)
else:
return paths
答案 2 :(得分:0)
是的。您可以尝试os.walk。
考虑以下具有3个子目录的路径:“ 1”,“ 2”,“ 3”。
-'1'有一个文件(“ 123.txt”)
-'2'为空
-“ 3”有2个文件(“ 123.txt”,“ 1234.txt”)
path = r"C:\Users\hvasala\Documents\Udemy Course\project\del"
import os
for dirname, _, filenames in os.walk(path):
for filename in filenames:
print(os.path.join(dirname, filename))
输出:
C:\ Users \ hvasala \ Documents \ Udemy Course \ project \ del \ 1 \ 123.txt
C:\ Users \ hvasala \ Documents \ Udemy Course \ project \ del \ 3 \ 123.txt
C:\ Users \ hvasala \ Documents \ Udemy Course \ project \ del \ 3 \ 1234.txt