【问题标题】:Extracting several files from several folders从多个文件夹中提取多个文件
【发布时间】:2015-05-01 11:55:40
【问题描述】:

我在不同的文件夹和子文件夹中有几个不同类型的文件。他们数量庞大。我希望从所有位置提取所有文件并复制到单个目录。

我编写了一个如下的 Python 脚本,[仅适用于 .doc 文件],但是花费了太多时间。

import os
from fnmatch import fnmatch
def listallfiles1(n):
    root = 'C:\Cand_Res'
    pattern = "*.doc"
    for path, subdirs, files in os.walk(root):
        for name in files:
            if fnmatch(name, pattern):
                print os.path.join(path, name)

如果您可以通过使用任何 Windows 功能或任何 MS-DOS 命令等或 Python 脚本来建议一些聪明的解决方案。

【问题讨论】:

标签: python windows python-2.7


【解决方案1】:

这个命令有帮助吗?

dir *.doc /b /s

这应该列出当前目录和所有子目录中所有扩展名为.doc 的文件。 /b 使输出只显示目录和文件,/s 指定搜索子目录。

【讨论】:

  • 谢谢,但现在是否必须将它们移动到目标文件夹?很抱歉再次打扰您。
  • 谢谢,但我想从 MS-DOS 迁移,move/MOVE/REN 命令没有帮助。
  • 那是另一个问题 :) ... 但请查看 shutil.move()os.rename()。您可以通过subprocess.check_output() 运行dos 命令,收集输出,然后在Python 中移动文件。对于纯 DOS 解决方案,请参阅此答案:stackoverflow.com/a/246576/21945 并使用moveren 而不是copy
  • DOS 是用 16 位 x86 程序集编写的单任务操作系统,具有基于 INT 21H 软件中断的 API、名为 COMMAND.COM 的命令行 shell 和名为 Windows ( 2.x)。上一个版本是 Windows ME 中的 MS-DOS 8.0,但到那时它已被 32 位 VxD 大大增强。现代 Windows 不运行任何 DOS 代码。它是用 C/C++ 编写的;使用 NT 内核和 Win32 API; GUI 是主 shell(explorer.exe、shell32.dll),命令行 shell 是 cmd.exe(附加到 conhost.exe 窗口)。 cmd.exe 来自 OS/2;从 COMMAND.COM 继承了很多东西;但它不是 DOS。
  • @eryksum:没错,但你在说什么? OP 不能在cmd.exe shell 中运行命令吗? (我保留 DOS 术语主要是因为 OP 引用它)。
猜你喜欢
  • 2020-11-20
  • 2023-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
相关资源
最近更新 更多