Differences between revisions 3 and 4
Revision 3 as of 2005-03-11 01:45:26
Size: 2596
Comment:
Revision 4 as of 2009-12-25 07:17:48
Size: 2596
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 93: Line 93:
-- ZoomQuiet [[[DateTime(2005-02-06T14:59:24Z)]]] -- ZoomQuiet [<<DateTime(2005-02-06T14:59:24Z)>>]

目录处理

  • 目录,就象 规则文件,也非常容易处理,我们先来侦听目录:

       1     import os
       2     for fileName in os.listdir ( '/' ):
       3        print fileName 
    
    • 正如所见,非常的简单 仅仅三行内就解决问题
  • 创建目录也一样简单:

       1     import os
       2     os.mkdir ( 'testDirectory' ) 
    
  • 删除和建立目录一样简单:

       1     import os
       2     os.rmdir ( 'testDirectory' ) 
    
  • 可以一次性创建很多目录:

       1     import os
       2     os.makedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) 
    
  • 不用任何多余操作,一次性清除很多目录也一样方便:

       1     import os
       2     os.removedirs ( 'I/will/show/you/how/deep/the/rabbit/hole/goes' ) 
    
  • 如果我们霰针对不同类型的文件进行操作,那未有"fnmatch"模块可以轻易的进行处理.
    • 这里,我们将所有遇到的 ".txt" 文件内容打印出来,所有 ".exe" 文件的名称打印出来:

         1     import fnmatch
         2     import os
         3 
         4     for fileName in os.listdir ( '/' ):
         5 
         6        if fnmatch.fnmath ( fileName, '*.txt' ):
         7 
         8           print open ( fileName ).read()
         9 
        10        elif fnmatch.fnmatch ( fileName, '*.exe' ):
        11 
        12           print fileName 
      
    • 其中 *,星号代表可以匹配所有字符(当然是正则表达式中意义)

    • 自然的,我们想仅仅匹配一个字符就 ? -- 问号:

         1     import fnmatch
         2 
         3     import os
         4 
         5     for fileName in os.listdir ( '/' ):
         6 
         7        if fnmatch.fnmatch ( fileName, '?.txt' ):
         8 
         9           print 'Text file.' 
      
    • 在"fnmatch"模块,我们可以创建正则表达式来应用,只要通过 "re" 模块:
         1     import fnmatch
         2 
         3     import os
         4 
         5     import re
         6 
         7     filePattern = fnmatch.translate ( '*.txt' )
         8 
         9     for fileName in os.listdir ( '/' ):
        10 
        11        if re.match ( filePattern, fileName ):
        12 
        13           print 'Text file.'
      
    • 如果想搜索一种类型的所有文件,有"glob"模块轻易的作到,使用模式与 "fnmatch" 模块一样:
      •    1     import glob
           2 
           3     for fileName in glob.glob ( '*.txt' ):
           4 
           5        print 'Text file.' 
        
    • 也可以在正则表达式的模式中指定一定范围内的特性, 比如说这样我们可以搜索出所有文件名是一个数字的 文本文件:
         1     import glob
         2 
         3     for fileName in glob.glob ( '[0-9].txt' ):
         4 
         5        print fileName 
      


-- ZoomQuiet [2005-02-06 14:59:24]

FileManagementInPython/Directories (last edited 2009-12-25 07:17:48 by localhost)