python 打开文件夹-打开vsd文件怎么打开
话不多说,上代码:
遍历一个文件中的所有文件(包括子目录中的文件)
import os
file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
for file in files:
path = os.path.join(root, file)
print(path)
只遍历根目录下的文件(不包括子目录下的文件)
import os
file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
if root != file:
break
for file in files:
path = os.path.join(root, file)
print(path)
新版本说明
之前写的老版本的解释太繁琐了,重写一个版本。
演示文件结构:
--demo(dir)
--test1(dir)
--a(dir)
--aa(dir)
--b(dir)
--c(dir)
--test2(dir)
--2.txt
--1.txt
首先我们打印根信息:
import os
file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
print(root)
可以看出,root不断从根目录开始循环进入子目录。
然后我们打印dirs信息:
file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
for dir in dirs:
path = os.path.join(root,dir)
print(dir)
print(path)
dirs 表示当前根目录下的子目录名。
输出所有文件地址:
import os
file = r'D:\dataset\makelabels\demo'
for root, dirs, files in os.walk(file):
for file in files:
path = os.path.join(root, file)
print(file)
print(path)
files 表示当前根目录下所有文件名的数组
旧版本说明
使用os库比较简单
1、最常见的需求是遍历获取文件夹下所有文件包括所有子文件夹的路径。
使用 os.walk(path) 函数:
import os
root_path = r'/Users/TNC/Desktop/bg_'
for i in os.walk(root_path):
print(i)
(注意:在字符串前加rpython 打开文件夹,防止被转义,比如出现'\t'。。。)
很容易看出:
1. 会打印一个或多个元组,第一个元组描述主文件夹,后面的元组描述主文件夹下的子文件夹。 (注意:在子目录下新建文件夹,二级目录仍然可以打印出来;因此python 打开文件夹,可知os.walk(root_path)可以得到描述主目录的元组,以及子文件夹和所有子文件夹下的上级子文件夹,顺序是:遍历一级目录文件夹下的第一个子文件夹,然后一次迭代遍历子文件下的所有上级子文件夹,遍历第一级目录下的第二个子文件夹level 目录全部结束后...,深度优先?)
2. 每个元组描述了一个文件夹的信息,每个元组有3个元素:
for i in os.walk(path):
print(type(i[0]))
print(type(i[1]))
print(type(i[2]))
第一个元素(str类型)存储文件夹的绝对路径;
第二个元素(列表类型)存储所有子文件夹的名称;
第三个元素(列表类型)存储当前目录下所有文件的名称;
显然:第一个元素的路径被添加到第三个元素列表中的文件名,这是一个文件的绝对路径。
常见场景:循环获取当前主文件下所有文件的绝对路径:
import os
#主文件夹路径
root_path = path=r'/Users/TNC/Desktop/bg_'
for i in os.walk(root_path):
for j in i[2]:
#i[0]是当前文件夹的绝对路径,j是文件名
path = os.path.join(i[0],j)
注意:os.path.join 连接中间带有'/'的字符串
例如:os.path.join(str1,str2,str3)
类似于 str1 + '/' +str2 +'/' +str3
注意不要在其中一个元素的末尾添加'/',如果在其中一个元素的末尾添加'/',它将不再连接到后面的元素
此外:
使用os.listdir(path)函数获取文件夹下所有文件(包括文件夹)的名称:
for i in os.listdir(root_path):
print(i)
只是名字...