码迷,mamicode.com
首页 > 编程语言 > 详细

用python操作文件和文件夹

时间:2015-08-03 22:31:17      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:

 

我有一堆层级3到4级的文件夹,这里面存有的一些文件是我需要的,一些是我不需要的。需要的文件都存储在名字中有‘Data‘的文件夹内。现在我需要把这些文件提取(拷贝)到一个指定的文件夹里。
一个文件夹一个文件夹去点开是一种方法,但是对于层级比较深的文件夹是一件很枯燥的事情。
本着一切尽量自动化的原则,我用python来做这件事情。
这个需求归纳下来需要:

  • 从一个起始目录开始
  • 遍历每一个文件夹
  • 如果文件夹的名字中有‘Data‘,拷贝它的内容至目标文件夹

python对文件、文件夹的操作是非常常见的需求,学会使用它们可以对付很多类似的批量处理文件的工作。
我们用到的package有两个:

  • os
  • subprocess

用到的函数是

  • os

    • os.listdir() 返回当前目录下的所有文件和文件夹名称
    • os.path.isfile() 判断某个名称是不是文件
    • os.path.isdir() 判断某个名称是不是文件夹
    • os.chdir() 修改当前工作目录,可以是绝对地址("C:\dir_a\dir_b"),或相对地址("dir_a")
  • subprocess

    • subprocess.call( " ", shell=True) ""里填入需要执行的命令行命令,相当于在命令行窗口直接执行这个命令

了解了这些函数后,放出代码。注意IterCopyDocs是一个迭代函数,自己调用自己,目的是模拟对目录的遍历。

import subprocess
import os

def IterCopyDocs(dstPath):
    ids = os.listdir()
    for id in ids:
        if os.path.isdir(id):
            if ‘Data‘ in id:
                os.chdir(id)
                pics = os.listdir()
                for pic in pics:
                    if os.path.isfile(pic):
                        print("copy \""+pic+"\" "+dstPath)
                        subprocess.call("copy \""+pic+"\" "+dstPath, shell=True)
                os.chdir(‘..\\‘)
            else:
                os.chdir(id)
                IterCopyDocs(dstPath)
                os.chdir(‘..\\‘)


subprocess.call("dir", shell=True)
root_dir = "C:\\Users\\Administrator\\Downloads"
dst_dir = "C:\\Users\\Administrator\\Downloads"
os.chdir(root_dir) # root directory of data
IterCopyDocs(dst_dir) # destination directory

(完)

 

用python操作文件和文件夹

标签:

原文地址:http://www.cnblogs.com/codingfun/p/4700492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!