• python 获取当前目录下文件(转)


    今天继续整理原来写的 python 代码,下面是获取文件信息的 python 处理代码。

      获取指定目录下文件的文件名以及文件的数量,然后列出其中还存在的目录名称:

    #!/usr/bin/env python2
    #-*-encoding:utf-8-*-

    import os,sys
    def listdir(dir,file):
    file.write(dir +'\n')
    fielnum =0
    list = os.listdir(dir)#列出目录下的所有文件和目录
    for line in list:
    filepath = os.path.join(dir,line)
    if os.path.isdir(filepath):#如果filepath是目录,则再列出该目录下的所有文件
    myfile.write(' '+ line +'//'+'\n')
    for li in os.listdir(filepath):
    myfile.write(' '+li +'\n')
    fielnum = fielnum +1
    elif os.path:#如果filepath是文件,直接列出文件名
    myfile.write(' '+line +'\n')
    fielnum = fielnum +1
    myfile.write('all the file num is '+ str(fielnum))
    dir = raw_input('please input the path:')
    myfile = open('list.txt','w')
    listdir(dir,myfile)
    myfile.close()

      获取的文件名、目录信息会在当前路径下生成 list.txt 的文件。文件内容如下:

    G:\codes\python\file_info
    list.txt
    list2.txt
    list_filenames.py
    list_filenames2.py
    list_files+.py
    test//
    g.txt
    mmm.pptx
    test2//
    list.txt
    test3
    all the file num is9

     
      下面是上面程序的升级版本,遍历了当前目录下的文件夹,继续执行遍历文件名的命令。

    #!/usr/bin/env python2
    #-*-encoding:utf-8-*-

    """os.walk(path),遍历path,返回一个对象,
    他的每个部分都是一个三元组,
    ('目录x',[目录x下的目录list],目录x下面的文件)"""

    import os
    def walk_dir(dir,fileinfo,topdown=True):
    for root, dirs, files in os.walk(dir, topdown):
    for name in files:
    print(os.path.join(name))
    fileinfo.write(os.path.join(root,name)+'\n')
    for name in dirs:
    print(os.path.join(name))
    fileinfo.write(' '+ os.path.join(root,name)+'\n')
    dir = raw_input('please input the path:')
    dir = r'G:\codes\python\file_info'
    fileinfo = open('list2.txt','w')
    walk_dir(dir,fileinfo)
    fileinfo.close()

      shell 打印出来的结果是:

    >>>================================ RESTART ================================
    >>>
    please input the path:G:\codes\python\file_info
    list.txt
    list2.txt
    list_filenames.py
    list_filenames2.py
    list_files+.py
    test
    test2
    g.txt
    mmm.pptx
    list.txt
    test3
    234.txt

      执行文件目录中 list2.txt 中的内容是:

    G:\codes\python\file_info\list.txt
    G:\codes\python\file_info\list2.txt
    G:\codes\python\file_info\list_filenames.py
    G:\codes\python\file_info\list_filenames2.py
    G:\codes\python\file_info\list_files+.py
    G:\codes\python\file_info\test
    G:\codes\python\file_info\test2
    G:\codes\python\file_info\test\g.txt
    G:\codes\python\file_info\test\mmm.pptx
    G:\codes\python\file_info\test2\list.txt
    G:\codes\python\file_info\test2\test3
    G:\codes\python\file_info\test2\test3\234.txt

      是目录的地方行首空了一定的位置。
     
      下面是另外一个增强版本,主要实现了遍历给定目录下所有文件,并计算所有文件的 MD5 值,然后将文件 MD5 值和文件名保存在目录下的 list3.txt 文件中,代码如下:

     

    #!/usr/bin/env python2
    #-*-encoding:utf-8-*-

    import os
    import sys
    import md5

    def walk_dir(dir,fileinfo,topdown=True):
        for root, dirs, files in os.walk(dir, topdown):
            for name in files:
                path = os.path.join(root,name)
                md5v = sumfile(path)
                newpath = path.replace(dir,'')
                fileinfo.write(newpath + ':' + md5v + '\n')

    def sumfile(fpath):
        m = md5.new()
        fobj = open(fpath)
        while True:
            d = fobj.read(8096)
            if not d:
                break
            m.update(d)
        return m.hexdigest()

    #获取脚本文件的当前路径
    def cur_file_dir():
        #获取脚本路径
        path = sys.path[0]
        #判断为脚本文件还是py2exe编译后的文件,如果是脚本文件,则返回的是脚本的目录,如果是py2exe编译后的文件,则返回的是编译后的文件路径
        if os.path.isdir(path):
            return path
        elif os.path.isfile(path):
            return os.path.dirname(path)
    #打印结果
    print cur_file_dir()

    def main():
        #dir = raw_input('please input the path:')
        dir = cur_file_dir()
        fileinfo = open('list3.txt','w')
        walk_dir(dir,fileinfo)

    if __name__ == '__main__':
        main()

      运行后 list3.txt 文件中的内容如下:

     

    \list.txt:0a732356981d24beab0d0c1c4092b2a7
    \list2.txt:6cebc24b3a996be27c732557a2ce545f
    \list3.txt:d41d8cd98f00b204e9800998ecf8427e
    \list_filenames.py:9201c1eefcaf2fd04478cc2b6430c678
    \list_filenames2.py:ca3f74bdb0a5485dd5d95d77da80141b
    \list_files+.py:720d569d2f07f0c80e0d695db31749ab
    \test\g.txt:d41d8cd98f00b204e9800998ecf8427e
    \test\mmm.pptx:6f0e81ad84c22838337f0f619080e7f2
    \test2\list.txt:d41d8cd98f00b204e9800998ecf8427e
    \test2\test3\234.txt:d41d8cd98f00b204e9800998ecf8427e

      欢迎转载,请注明原文地址:http://vipscu.blog.163.com/blog/static/181808372201221121244906/
  • 相关阅读:
    为什么DIY报价----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十二)[转]
    物以类聚,人以群分--走出软件作坊:三五个人十来条枪 如何成为开发正规军(十一)[转]
    将服务费用DIY到底----走出软件作坊:三五个人十来条枪 如何成为开发正规军(十)[转]
    实施费用也能DIY--走出软件作坊:三五个人十来条枪 如何成为开发正规军(九)[转]
    去掉iphone手机滑动默认行为
    获取json对象长度的问题
    手机淘宝用JS来动态写meta标签(1像素边框处理方法)
    移动端多行文字截断
    移动端初始化页面
    JavaScript 高级程序设计 02-变量、数据类型
  • 原文地址:https://www.cnblogs.com/qq78292959/p/2985082.html
Copyright © 2020-2023  润新知