1.
os.walk
os.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。>>>
import
os>>>
def
fun(
path
):...
for
root,
dirs,
files
in
os.walk(
path
):...
for
fn
in
files:...
root,
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD
a.txtC:\TDDOWNLOAD
b.txtC:\TDDOWNLOAD\sub1
c.txtC:\TDDOWNLOAD\sub1
d.txt>>>
2.
glob.glob
glob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理:>>>
def
fun(
path
):...
for
fn
in
glob.glob(
path
+
os.sep
+
'*'
):
#
'*'代表匹配所有文件...
if
os.path.isdir(
fn
):
#
如果结果为文件夹...
fun(
fn
)
#
递归...
else:...
fn...
>>>
fun(
r'C:\TDDOWNLOAD'
)C:\TDDOWNLOAD\a.txtC:\TDDOWNLOAD\b.txtC:\TDDOWNLOAD\sub1\c.txtC:\TDDOWNLOAD\sub1\d.txt>>>
'*'为悄喊喊匹配渗握模式,代表匹配所启野有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。
您可以使用Python内置的os模块中的listdir()函数来查看指定路径下的所有文件和文件夹。以下是一个示笑滚灶例代码:```python
import os
path = "/path/to/your/data/folder" # 将 "/path/to/your/data/folder" 替换为实际数据文件夹的路径
files = os.listdir(path)
for file in files:
print(file)
```
在这段示例代码中,我们将文件夹的路径存储在变量 `path` 中,并使用 `os.listdir(path)` 函数列出该路径下的所有文件和文件夹。 然后,我们使用一个for循环遍历文件列表,并使用print()函数输出每个文件的文件名。备冲
请记住,您需要用实际数据文碰扮件夹的路径替换代码中的路径。
有时我们有列出目录下都有哪些文件和子目录的需求,这种情况是有现成命令可用的,比如windows下的dir命令,linux下的ls命令都碰物可以,那我们用python代码怎么实现呢?
我们利用python丰富的库很容易就能实现一个简易版本,下面我们就用4种方法来实现它。
一、使用os.popen
os.popen工作原理是新建一个子进程,然后用这个子进程执行命令,父进程与子进程间通过管道进行通信。
根据调用popen时的传参,我们可以通过管道读取子进程的输出也可以向子进程写数据,默认是读取子进程的输出。
从以上描述可以看出popen是非常通用的,不是只能用于我们这个例子哦。
那我们开始用它实现我们的需求吧,代码如下:
哈哈,是不是很简单,这种方式虽然能达到目的但其实并不是我们想要的,我们本来就是要实现ls的,结果调用了ls,所以严格意义上来说我们并没有实现ls,那让我们继续往下看橘吵稿其它方法吧,嘿嘿。
二、使用glob.glob
glob可以根据你使用的通配符对文件进行匹配,利用这个特性我们可以列出当前目录下都有哪些文件和子目录,如下代码:
三、使用os.listdir
os.listdir同样可以列出某个目录下都有哪些文件和圆孝子目录,如下代码:
四、使用os.walk
os.walk在遍历目录方面非常强大,它不但可以遍历你需要的目录,也可以递归遍历子目录且递归的深度可以用代码控制,下面让我们分别看下怎么遍历整个目录树以及怎么控制深度吧。
os.walk默认是遍历整个目录树的,如下代码就会递归打印出当前目录下所有文件:
那我们怎么控制遍历的深度,比如只遍历n层呢?其实很简单,只需要定义一个深度变量,然后到达n后跳出循环即可,如下代码就只遍历1层:
至此我们已经写完4种方法了,如果你还有其他方法,欢迎评论交流。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)