分享

用python操作文件和文件夹

 心不留意外尘 2016-10-26

http://www.cnblogs.com/codingfun/p/4700492.html

2015

我有一堆层级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
复制代码

 

 

(完)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多