首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将子目录中的特定文件移动到目录中- python

将子目录中的特定文件移动到目录中- python
EN

Stack Overflow用户
提问于 2011-11-17 00:25:36
回答 4查看 12.1K关注 0票数 9

我是python的新手,但我一直在努力学习基础知识。

无论如何,我有几个文件,一旦我从它们的zip文件中解压出来(非常慢的进程,顺便说一句),就会产生几百个子目录,每个子目录中有2-3个文件。现在我想要做的是提取所有那些以'dem.tif‘结尾的文件,并将它们放在一个单独的文件中(移动而不是复制)。

我可能试图跳到这里的最深端,但我写的代码运行没有错误,所以它一定是找不到文件(确实存在!)因为它给了我else语句。下面是我创建的代码

代码语言:javascript
复制
import os

src = 'O:\DATA\ASTER GDEM\Original\North America\UTM Zone 14\USA\Extracted' # input
dst = 'O:\DATA\ASTER GDEM\Original\North America\UTM Zone 14\USA\Analyses' # desired     location

def move():
    for (dirpath, dirs, files) in os.walk(src):
        if files.endswith('dem.tif'):
            shutil.move(os.path.join(src,files),dst)
            print ('Moving ', + files, + ' to ', + dst)
        else:
            print 'No Such File Exists'
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-17 00:35:23

首先,欢迎来到社区,还有python!你可能想要更改你的用户名,特别是如果你经常在这里。:)

我的建议如下(从Mr. Beazley窃取):

代码语言:javascript
复制
# genfind.py
#
# A function that generates files that match a given filename pattern

import os
import shutil
import fnmatch

def gen_find(filepat,top):
    for path, dirlist, filelist in os.walk(top):
        for name in fnmatch.filter(filelist,filepat):
            yield os.path.join(path,name)

# Example use

if __name__ == '__main__':
    src = 'O:\DATA\ASTER GDEM\Original\North America\UTM Zone 14\USA\Extracted' # input
    dst = 'O:\DATA\ASTER GDEM\Original\North America\UTM Zone 14\USA\Analyses' # desired     location

    filesToMove = gen_find("*dem.tif",src)
    for name in filesToMove:
        shutil.move(name, dst)
票数 8
EN

Stack Overflow用户

发布于 2011-11-17 00:28:38

更新:提问者已经在下面澄清了他/她实际上是在调用移动函数,这是我回答的第一点。

还有一些其他的事情需要考虑:

如果你把src

  • The返回的值打印出来并注释掉循环中的其余代码,希望你能很明显的看到上面的documentation for that function.

  • Assuming,
  • os.walkfilesos.joinroot,而不是上面提到的,如果你打印出os.walk返回的值,并注释掉循环中的其余代码,那么
  • 就很明显了。我总是首先尝试一些只将参数打印到shutil.move的代码,直到您确定它是正确的。
票数 3
EN

Stack Overflow用户

发布于 2011-11-17 00:31:23

我认为你混淆了你应该使用os.walk()的方式。

代码语言:javascript
复制
for dirpath, dirs, files in os.walk(src):
    print dirpath
    print dirs
    print files
    for filename in files:
        if filename.endswith('dem.tif'):
            shutil.move(...)
        else:
            ...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8155060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档