python3获取指定目录内容的详细信息
不同平台获取指定目录内容的详细信息命令各不相同:
Linux中可以通过ls -al获取获取
windows中可以通过dir命令获取
下面是我写的一个通用获取目录内容详细信息的python3脚本:
#!/usr/bin/env python3
# -*- coding: utf-8 -*- import os, time, sys
from os.path import join, getsize def ListDir(dir_data):
'''
:param dir_data: 指定获取内容的目录
每次返回目录下的一个文件或文件夹(生成器练习)
'''
list_dir = os.listdir(dir_data)
while True:
try:
list_obj = list_dir.pop()
yield dir_data, list_obj
except IndexError:
return def GetDirSize(dir):
'''
:param dir: 指定获取大小的目录
获取目录大小
'''
size = 0
for root, dirs, files in os.walk(dir):
size += sum([getsize(join(root, name)) for name in files])
return size def getFileInfo(dir_data):
'''
:param dir_data: 调用ListDir函数是所需参数
获取目录内的每个文件或目录的属性和大小并打印
'''
info = {}
for root, obj in ListDir(dir_data):
dir_obj = '%s/%s' %(root, obj)
if os.path.isfile(dir_obj): #文件处理
'''info为字典格式,方便返回调用,此脚本只是输出内容,不涉及返回调用'''
info['TimeCreated'] = os.path.getctime(dir_obj) #获取创建时间
info['TimeModified'] = os.path.getatime(dir_obj) #获取访问时间
info['Size'] = os.path.getsize(dir_obj)/1024/1024 #获取文件大小,单位为M
if info['Size'] >= 1024: #文件大小换算为G
info['Size'] = info['Size']/1014
print('%-5s\t%10.2fG\t%30s\t%30s\t%-20s' %('dir', info['Size'], time.ctime(info['TimeCreated']), time.ctime(info['TimeModified']), obj))
elif info['Size'] < 1: #文件大小换算问K
info['Size'] = info['Size'] * 1024
print('%-5s\t%10.2fK\t%30s\t%30s\t%-20s' %('dir', info['Size'], time.ctime(info['TimeCreated']), time.ctime(info['TimeModified']), obj))
else:
print('%-5s\t%10.2fM\t%30s\t%30s\t%-20s' %('dir', info['Size'], time.ctime(info['TimeCreated']), time.ctime(info['TimeModified']), obj)) else: #目录处理
info['TimeCreated'] = os.path.getctime(dir_obj)
info['TimeModified'] = os.path.getatime(dir_obj)
info['Size'] = GetDirSize(dir_obj)/1024/1024 if info['Size'] >= 1024:
info['Size'] = info['Size']/1014
print('%-5s\t%10.2fG\t%30s\t%30s\t%-20s' %('file', info['Size'], time.ctime(info['TimeCreated']), time.ctime(info['TimeModified']), obj))
elif info['Size'] < 1:
info['Size'] = info['Size'] * 1024
print('%-5s\t%10.2fK\t%30s\t%30s\t%-20s' %('file', info['Size'], time.ctime(info['TimeCreated']), time.ctime(info['TimeModified']), obj))
else:
print('%-5s\t%10.2fM\t%30s\t%30s\t%-20s' %('dir', info['Size'], time.ctime(info['TimeCreated']), time.ctime(info['TimeModified']), obj)) if __name__ == '__main__':
getFileInfo(sys.argv[1])
win7执行结果:
E:\chengd_ftp_server\module>python list_dir.py ./
file 7.22K Mon Aug 14 22:36:24 2017 Sat Aug 19 13:03:43 2017 __pycache__
file 8.47K Sat Aug 12 10:32:11 2017 Sat Aug 19 00:30:22 2017 threading_socket_server.py
file 1.56K Sat Aug 12 09:04:21 2017 Mon Aug 14 23:08:05 2017 socket_ftp_main.py
file 3.02K Sat Aug 19 14:17:31 2017 Sat Aug 19 14:17:31 2017 list_dir.py
centos7执行结果:
[root@localhost tmp]# ls -lah
total 128K
drwxrwxrwt. 15 root root 4.0K Jul 20 18:34 .
dr-xr-xr-x. 17 root root 253 Jul 18 13:03 ..
drwxr-xr-x 2 root root 85 Jul 18 17:32 20170720
drwxr-xr-x 2 root root 103 Jul 19 05:58 20170721
drwxr-xr-x 2 root root 141 Jul 19 13:14 20170722
drwxr-xr-x 2 root root 121 Jul 20 01:33 20170723
drwxr-xr-x 2 root root 39 Jul 20 04:03 20170724
drwxr-xr-x 2 root root 54 Jul 20 17:26 20170801
-rw-r--r-- 1 root root 233 Jul 19 23:33 apache.log
-rw-r--r-- 1 root root 1.4K Jul 19 23:21 apachen.log
drwxrwxrwt. 2 root root 6 Jun 26 15:37 .font-unix
drwxr-xr-x 2 root root 18 Jul 18 13:08 hsperfdata_root
drwxrwxrwt. 2 root root 6 Jun 26 15:37 .ICE-unix
drwxr-xr-x. 2 root root 30 Jun 27 05:27 shutil_file
drwxrwxrwt. 2 root root 6 Jun 26 15:37 .Test-unix
drwxrwxrwt. 2 root root 6 Jun 26 15:37 .X11-unix
drwxrwxrwt. 2 root root 6 Jun 26 15:37 .XIM-unix
-rw------- 1 root root 97K Jul 18 11:27 yum_save_tx.2017-07-18.11-27.uzI4eR.yumtx
-rw------- 1 root root 15K Jul 18 12:53 yum_save_tx.2017-07-18.12-53.vANJxP.yumtx
[root@localhost tmp]# /root/dir.py .
dir 1.72K Thu Jul 20 17:26:17 2017 Thu Jul 20 17:26:19 2017 20170801
dir 1.65K Thu Jul 20 04:03:46 2017 Thu Jul 20 07:01:24 2017 20170724
file 0.23K Wed Jul 19 23:33:55 2017 Wed Jul 19 23:34:05 2017 apache.log
file 1.30K Wed Jul 19 23:21:24 2017 Wed Jul 19 23:19:02 2017 apachen.log
dir 4.88K Thu Jul 20 01:33:32 2017 Thu Jul 20 18:17:47 2017 20170723
dir 2.13K Wed Jul 19 13:14:10 2017 Thu Jul 20 18:17:47 2017 20170722
dir 0.97K Wed Jul 19 05:58:58 2017 Thu Jul 20 18:17:47 2017 20170721
dir 3.17K Tue Jul 18 17:32:47 2017 Thu Jul 20 18:17:47 2017 20170720
dir 32.00K Tue Jul 18 13:08:48 2017 Thu Jul 20 18:17:47 2017 hsperfdata_root
file 14.76K Tue Jul 18 12:53:05 2017 Tue Jul 18 12:53:05 2017 yum_save_tx.2017-07-18.12-53.vANJxP.yumtx
file 96.68K Tue Jul 18 11:27:03 2017 Tue Jul 18 11:27:03 2017 yum_save_tx.2017-07-18.11-27.uzI4eR.yumtx
file 0.05K Tue Jul 18 11:34:08 2017 Thu Jul 20 18:17:47 2017 shutil_file
dir 0.00K Mon Jun 26 15:44:13 2017 Thu Jul 20 18:17:47 2017 .ICE-unix
dir 0.00K Mon Jun 26 15:44:13 2017 Thu Jul 20 18:17:47 2017 .font-unix
dir 0.00K Mon Jun 26 15:44:13 2017 Thu Jul 20 18:17:47 2017 .X11-unix
dir 0.00K Mon Jun 26 15:37:09 2017 Thu Jul 20 18:17:47 2017 .Test-unix
dir 0.00K Mon Jun 26 15:37:09 2017 Thu Jul 20 18:17:47 2017 .XIM-unix
文件大小之计算到KB,不是太精确;大家有兴趣的可以精确到字节就完美了!
python3获取指定目录内容的详细信息的更多相关文章
- [转]C# 获取指定目录下所有文件信息、移动目录、拷贝目录
原文:http://blog.csdn.net/vchao13/article/details/6200255 1.获取指定目录下所有文件信息 /// <summary> /// 返回指定 ...
- C# 获取指定目录下所有文件信息
/// <summary> /// 返回指定目录下所有文件信息 /// </summary> /// <param name="strDirectory&quo ...
- C# 获取指定目录下所有文件信息、移动目录、拷贝目录
/// <summary> /// 返回指定目录下的所有文件信息 /// </summary> /// <param name="strDirectory&qu ...
- c# 获取指定目录下的所有文件并显示在网页上
参考文献: FileInfo 的使用 https://msdn.microsoft.com/zh-cn/library/system.io.fileinfo_methods(v=vs.110).as ...
- 获取小众ftp服务器指定目录内容列表
今天获取小众ftp服务器指定目录内容列表时费劲急了. ///parama url="ftp://x.x.x.x/dir_name" public string GetFTPDir( ...
- 9.JAVA之GUI编程列出指定目录内容
代码如下: /*列出指定目录内容*/ import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import ...
- java基础知识回顾之javaIO类--File类应用:获取指定目录下面的指定扩展名的文件,将文件的绝对路径写入到目的文件当中
/** * File文件综合应用 * 需求:获取指定目录下面,指定扩展名的文件,将文件的绝对路径写到文本文件当中. * * 思路:1.需要深度遍历.--递归 * 2.遍历的过程中过滤指定扩展名的文件 ...
- python获取指定目录下所有文件名os.walk和os.listdir
python获取指定目录下所有文件名os.walk和os.listdir 觉得有用的话,欢迎一起讨论相互学习~Follow Me os.walk 返回指定路径下所有文件和子文件夹中所有文件列表 其中文 ...
- C++:获取指定目录下的所有文件
1.获得指定目录下的所有文件(不搜索子文件夹) 需要包含的头文件 #include <io.h> #include <string> #include <vector&g ...
随机推荐
- Ionic命令大全
start [options] <PATH> [template] ............. Starts a new Ionic project in the specified P ...
- 准备好要上传到 Azure 的 Windows VHD 或 VHDX
在将 Windows 虚拟机 (VM) 从本地上传到 Azure 之前,必须准备好虚拟硬盘(VHD 或 VHDX). Azure 仅支持采用 VHD 文件格式且具有固定大小磁盘的第 1 代 VM. V ...
- SQL Server 全文索引的硬伤(转载)
本文关键字:SQL Server全文索引.CONTAINS.FREETEXT.CONTAINSTABLE.FREETEXTTABLE等谓词. 想象这样一个场景:在DataBase_name.dbo.T ...
- Android external扩展工程
Android的扩展工程包含在external文件夹中,这是一些经过修改后适应Android系统的开源工程,这些工程有些在主机上运行,有些在目标机上运行: 工程名称 工程描述 aes 高级加密标 ...
- SSH批量分发管理
ssh服务认证类型主要有两个: 基于口令的安全验证: 基于口令的安全验证的方式就是大家一直在用的,只要知道服务器的ssh连接账户.口令.IP及开发的端口,默认22,就可以通过ssh客户端登陆到这台远程 ...
- security/pam_appl.h:没有那个文件或目录
在编译开源库时, 提示 pam.h:4:10: 致命错误:security/pam_appl.h:没有那个文件或目录 #include <security/pam_appl.h> 解决方法 ...
- Git Flow 工作模型与使用
一. Git Flow 工作模型的原理 无规矩不成方圆,但是规矩太多了,则感觉到束缚.我们一个人工作的时候喜欢无拘无束,想怎么干就怎么干,没有人评判,没有人检验.时间久了就会盲目自大,以为增删改查熟悉 ...
- django版本切换以及更改url(pycharm)
Django版本切换:https://blog.csdn.net/weixin_42305814/article/details/80742090 因为是从2版本更改到1版本,所以里面一些东西需要变动 ...
- EXI6.0的安装(找不到网卡、找不到磁盘)
给一台华为2488 V5 服务器安装EXI6.0服务 (问过华为售后不支持EXI5.5的安装,建议EXI6.0及以上版本) 根据界面提示信息按“Del”.进入BIOS设置界面 参考博客地址:https ...
- IIS 部署SSL证书
1.导入证书 打开IIS服务管理器,点击计算机名称,双击‘服务器证书 双击打开服务器证书后,点击右则的导入 选择证书文件,点击确定 2.站点开启SSL 选择证书文件,点击确定 点击网站下的站点名称,点 ...