求 python 遍历文件属性的办法

求 python 遍历文件属性的办法

我想要用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'
文件列表是否在目录的状态中,读出来它,应该就可以历遍了吧。
glob
或者os.listdir
都行
只需要用到以下东西  其他的查手册去
glob
os.stat
os.path.isfile
os.path.isdir
os.path.join
stats -->模块
>>> 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

这个报错怎么解决

难道还有字符类型限制?
看了自带文档,下面两种方法都可以,顺便问候闷骚的高手们
  
  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
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


让你看手册  哎。。。

记住 手册 最少 要完整的看一次以上
os.stat(fs[2])[stat.ST_SIZE]/1024.0
315.166015625

这个是取大小  除了1024后是kb
3.0b1 版本的该怎么写呢?
print() 怎么表述

我没用过3.0 这个你还是自己看手册

碰到问题 自己查资料 这样印象才深刻