我是Python的新手,我正在尝试创建一个基本的备份程序,这将允许我在整个主驱动器中搜索某个扩展名的文件(在本例中为.doc)。计算机,然后复制到预定目录(因为该程序将从USB运行)。我已经掌握了一些基本的I / O命令,但是我对此有一点困难
有时间的人能帮我解决这个问题吗?
感谢您的时间,
小连
答案 0 :(得分:2)
要探索文件系统,您可以尝试os.walk
。它将递归地跟随一个目录,在每个目录中产生一个文件和目录列表。
例如,给定这样的目录结构:
.
├── baz
│ └── bif
│ ├── bang
│ └── file1.doc
└── foo
├── bar
│ └── file3.doc
└── file2.doc
此代码:
import os
print list(os.walk('.')) # walk current (.) directory
会产生这样的东西:
[('.', ['baz', 'foo'], []),
('./baz', ['bif'], []),
('./baz/bif', ['bang'], ['file1.doc']),
('./baz/bif/bang', [], []),
('./foo', ['bar'], ['file2.doc']),
('./foo/bar', [], ['file3.doc'])]
然后,您可以遍历结果并编译要复制的文件列表。
对于复制文件,shutil
包有copy
,它只占用src / dest文件路径。有关详细信息,请参阅文档:http://docs.python.org/library/shutil.html
修改强>
更有用的文件搜索功能包括:
glob
包:顾名思义,glob样式文件匹配(* .txt,。等)。我不相信这支持递归搜索。在此示例中,如果我执行glob('foo/*.doc')
,则会得到['foo/file2.doc']
。fnmatch
包的fnmatch
可以对字符串进行glob样式模式匹配。示例fnmatch('foo.txt', '*.txt')
将返回True