免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6428 | 回复: 10
打印 上一主题 下一主题

求 python 遍历文件属性的办法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-20 14:40 |只看该作者 |倒序浏览
我想要用python 实现一个功能:

扫描指定目录下的全部文件,把文件名称,创建时间,大小等属性,作为列表导入到一个文件里,

就像 linux下的这个命令效果: ls -tl --full | awk '{print $6 ", " $7 " ," $ 9}' > a.csv

现在我只知道怎么取单个文件属性的办法,请各位赐教遍历文件属性的方法。
>>> import os
>>> o=os.stat(r'F:\\Xunlei\160103.doc')
>>> t=o.st_ctime
>>> t
1202624180.046875
>>> print type(t)
<type 'float'>
>>> import time
>>> r=time.ctime(t)
>>> r
'Sun Feb 10 14:16:20 2008'
>>> s=time.gmtime(t)
>>> s
(2008, 2, 10, 6, 16, 20, 6, 41, 0)
>>> time.strftime("%a, %d %b %Y %H:%M:%S +0000", s)
'Sun, 10 Feb 2008 06:16:20 +0000'

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2008-06-20 14:44 |只看该作者
文件列表是否在目录的状态中,读出来它,应该就可以历遍了吧。

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
3 [报告]
发表于 2008-06-20 20:09 |只看该作者
glob
或者os.listdir
都行
只需要用到以下东西  其他的查手册去
glob
os.stat
os.path.isfile
os.path.isdir
os.path.join
stats -->模块

论坛徽章:
0
4 [报告]
发表于 2008-06-20 22:56 |只看该作者

这个报错怎么解决

>>> import os
>>> import time
>>> import csv
>>> f=os.listdir('E:\\My Music\\Beyond\\')
>>> for row in f:
        i=os.path.join('E:\\My Music\\Beyond\\',row)
        o=time.gmtime(os.path.getctime(i))
        t=time.strftime("%Y%m%d",o)
        print(row,t,sep=',')

       
Amani.mp3,20080113
Desktop.ini,20080113
不再犹豫.mp3,20080113
俾面派对.mp3,20080113
再见理想.mp3,20080113

>>> s = csv.writer(open('d:\\Beyond.csv', 'wb'))
>>> for row in f:
        i=os.path.join('E:\\My Music\\Beyond\\',row)
        o=time.gmtime(os.path.getctime(i))
        t=time.strftime("%Y%m%d",o)
        winit=[row,t]
        s.writerow(wlinit)

       
Traceback (most recent call last):
File "<pyshell#21>", line 6, in <module>
        swriterow(lwlinit)
File "D:\Python30\lib\io.py", line 987, in write
        raise TypeError("can't write str to binary stream")
TypeError: can't write str to binary stream

这个报错怎么解决

[ 本帖最后由 lan97 于 2008-6-20 23:00 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-06-20 22:58 |只看该作者
难道还有字符类型限制?

论坛徽章:
0
6 [报告]
发表于 2008-06-21 21:43 |只看该作者
看了自带文档,下面两种方法都可以,顺便问候闷骚的高手们
  
  import os
  import time
  import csv
  f=os.listdir('E:\\My Music\\Beyond\\')
  spamWriter = csv.writer(open('d:\\eggs.csv', 'w'), delimiter=',',quotechar=',', quoting=csv.QUOTE_MINIMAL)
  for row in f:
   i=os.path.join('E:\\My Music\\Beyond\\',row)
   o=time.gmtime(os.path.getctime(i))
   t=time.strftime("%Y%m%d",o)
   l=(row,t)
   spamWriter.writerow(l)
  ----------------------------------------
  
  IDLE 3.0b1 ==== No Subprocess ====
  >>> import os
  >>> import time
  >>> import csv
  >>> f = os.listdir('E:\\My Music\\Beyond\\')
  >>> s = csv.writer(open('d:\\Beyond.csv', 'w'))
  >>> for row in f:
   i=os.path.join('E:\\My Music\\Beyond\\',row)
   o=time.gmtime(os.path.getctime(i))
   t=time.strftime("%Y%m%d",o)
   winit=[row,t]
   s.writerow(winit)
  
  
  20
  22
  19
  19
  19
  17
  18
  18
  20
  18
  17
  19
  17
  19
  19
  19
  17

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
7 [报告]
发表于 2008-06-22 00:00 |只看该作者
import os
import stat
import glob
import time
for i in fs:
    if os.path.isfile(i):
        print "File %-20s CreateTime: %s" % (i, time.ctime(os.stat(i)[stat.ST_CTIME]))
   
File c:\AUTOEXEC.BAT      CreateTime: Tue Dec 26 02:54:47 2006
File c:\boot.ini          CreateTime: Tue Dec 26 10:38:42 2006
File c:\bootfont.bin      CreateTime: Sun Aug 27 14:00:00 2006
File c:\CONFIG.SYS        CreateTime: Tue Dec 26 02:54:47 2006
File c:\IO.SYS            CreateTime: Tue Dec 26 02:54:47 2006
File c:\MSDOS.SYS         CreateTime: Tue Dec 26 02:54:47 2006
File c:\NTDETECT.COM      CreateTime: Wed Jul 20 21:03:02 2005
File c:\ntldr             CreateTime: Tue Jun 21 00:52:26 2005
File c:\t.txt             CreateTime: Sat May 24 00:04:32 2008
File c:\test.py           CreateTime: Sun Apr 27 22:03:20 2008
File c:\test.py.bak       CreateTime: Sun Apr 27 22:40:48 2008


让你看手册  哎。。。

记住 手册 最少 要完整的看一次以上

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
8 [报告]
发表于 2008-06-22 00:06 |只看该作者
os.stat(fs[2])[stat.ST_SIZE]/1024.0
315.166015625

这个是取大小  除了1024后是kb

论坛徽章:
0
9 [报告]
发表于 2008-06-22 09:38 |只看该作者
3.0b1 版本的该怎么写呢?
print() 怎么表述

[ 本帖最后由 lan97 于 2008-6-22 09:40 编辑 ]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
10 [报告]
发表于 2008-06-22 09:55 |只看该作者
我没用过3.0 这个你还是自己看手册

碰到问题 自己查资料 这样印象才深刻
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP