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 is 9


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

#!/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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值