使用 os.walk() 将目录中的所有 .txt 文件移动到新文件夹?

Posted

技术标签:

【中文标题】使用 os.walk() 将目录中的所有 .txt 文件移动到新文件夹?【英文标题】:Moving all .txt files in a directory to a new folder with os.walk()? 【发布时间】:2020-01-26 19:36:52 【问题描述】:
import os
import shutil
folder = 'c:\\Users\\myname\\documents'
for folderNames, subfolders, filenames in os.walk(folder):
    for file in filenames:
        if file.endswith('.txt'):
            shutil.copy(?????, 'c:\\Users\\myname\\documents\\putfileshere\\' + file)

使用 os.listdir 对文件夹中的所有 .txt 文件执行此操作很简单,但我遇到了麻烦,因为在 oswalk 中我不知道如何获取以 .txt 结尾的文件的完整文件路径。 txt 因为它可以在许多子文件夹中

不确定我是否使用了正确的目录术语,但为了更清楚起见,我想将所有 .txt 文件移动到新文件夹,即使它是文档文件夹深处的 1、2、3 个子文件夹。

【问题讨论】:

【参考方案1】:

要获得完整路径,您必须结合根和文件名部分。根部分指向枚举文件名的完整路径。

for root, _, filenames in os.walk(folder):
    for filename in filenames:
        if filename.endswith('.txt'):
            file_path = os.path.join(root, filename)
            shutil.copy(file_path, ...)

【讨论】:

谢谢,我对什么是 root\foldername 有一个误解,我将不得不重新审视我的理解 是的,我第一次使用时觉得它不是很直观【参考方案2】:

你也可以使用glob.glob(pathname)

【讨论】:

以上是关于使用 os.walk() 将目录中的所有 .txt 文件移动到新文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

Python - Os.walk循环遍历不同驱动器中的目录列表

在Python中使用os.walk为对应的文件夹和子文件夹创建一个txt文件

如何在 Python 中使用 os.walk 获取特定文件或目录列表?

python笔记4-遍历文件夹目录os.walk()

Python3.x:os.listdir和os.walk(获取路径方法)的区别

python 使用python os.walk遍历所有子目录