1.从现有文件中获取信息
使用Python中的模块,可以从现有文件中获取信息。使用“os”模块和“stat”模块可以获取文件的基本信息:
1 import os 2 import stat 3 import time<DIV></DIV> 4 5 fileStats = os.stat ( ‘test.txt‘ ) 6 fileInfo = { 7 ‘Size‘ : fileStats [ stat.ST_SIZE ], 8 ‘LastModified‘ : time.ctime ( fileStats [ stat.ST_MTIME ] ), 9 ‘LastAccessed‘ : time.ctime ( fileStats [ stat.ST_ATIME ] ), 10 ‘CreationTime‘ : time.ctime ( fileStats [ stat.ST_CTIME ] ), 11 ‘Mode‘ : fileStats [ stat.ST_MODE ] 12 } 13 14 for infoField, infoValue in fileInfo: 15 print infoField, ‘:‘ + infoValue 16 if stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 17 print ‘Directory. ‘ 18 else: 19 print ‘Non-directory.‘
上面这个例子创建了一个包含文件基本信息的dictionary。然后显示了相关信息,并且告诉我们打开的是否为目录。我们也可以试一下打开的是否是其它几种类型:
1 import os 2 import stat 3 4 fileStats = os.stat ( ‘test.txt‘ ) 5 fileMode = fileStats [ stat.ST_MODE ] 6 if stat.S_ISREG ( fileStats [ stat.ST_MODE ] ): 7 print ‘Regular file.‘ 8 elif stat.S_ISDIR ( fileStats [ stat.ST_MODE ] ): 9 print ‘Directory.‘ 10 elif stat.S_ISLNK ( fileStats [ stat.ST_MODE ] ): 11 print ‘Shortcut.‘ 12 elif stat.S_ISSOCK ( fileStats [ stat.ST_MODE ] ): 13 print ‘Socket.‘ 14 elif stat.S_ISFIFO ( fileStats [ stat.ST_MODE ] ): 15 print ‘Named pipe.‘ 16 elif stat.S_ISBLK ( fileStats [ stat.ST_MODE ] ): 17 print ‘Block special device.‘ 18 elif stat.S_ISCHR ( fileStats [ stat.ST_MODE ] ):
获取路径内文件信息的方法:
1 import os 2 for fileName in os.listdir ( ‘/‘ ): 3 print fileName
创建/删除目录的方法:
1 import os 2 os.mkdir ( ‘testDirectory‘ ) 3 os.rmdir(‘testDirectory‘)
创建多级目录的方法:
1 import os 2 os.makedirs ( ‘I/will/show/you/how/deep/the/rabbit/hole/goes‘ )
2. 处理路径下特定的文件
方法一:fnmatch
匹配特定的文件类型:
当需要对一个特定的文件类型进行操作时,我们可以选择“fnmatch”模块。以下是显示“.txt”文件的内容和“.exe”文件的文件名:
1 import fnmatch 2 import os 3 4 for fileName in os.listdir ( ‘/‘ ): 5 if fnmatch.fnmatch ( fileName, ‘*.txt‘ ): 6 print open ( fileName ).read() 7 elif fnmatch.fnmatch ( fileName, ‘*.exe‘ ): 8 print fileName
匹配具体的文件:
1 import fnmatch 2 import os 3 4 for fileName in os.listdir ( ‘/‘ ): 5 if fnmatch.fnmatch ( fileName, ‘serch_this.txt‘ ): 6 print ‘Text file.‘
方法二:glob (更好用的方法)
若只需要匹配一种类型的文件,更好的办法是使用“glob”模块。该模块的格式和“fnmatch”相似:
1 import glob 2 3 for fileName in glob.glob ( ‘*.txt‘ ): 4 print ‘Text file.‘
“glob”模块利用“fnmatch”模块来实现。