
#-- coding: utf-8 --
import os
#已知文件名的情况下,可以用这个函数
def getFileInfo(filepath):
info = {}
if ospathisfile(filepath):
info['TimeCreated'] = ospathgetctime(filepath)
info['TimeModified'] = ospathgetatime(filepath)
info['Size'] = ospathgetsize(filepath)
return info
# 如果只知道文件根目录,但是不知道具体的文件路径,
# 可以先用oslistdir获得文件和文件夹列表
#-------------------分界线----------------------
# 这是回答你的第二个问题。如何找到一个字符串中指定两个字符中间的字符串
# 这里用的是正则表达式
import re
special = "+$^[](){}|\/" #正则表达式中会出现的特殊字符
# 输入参数为原始字符,leftmark表示左边的分隔符号,rightmark表示右边的分隔符号
#函数返回在leftmark和rightmark中间的内容,可能匹配满足不止一次,没有找到就返回空
def matchpattern(str1,leftmark,rightmark):
lf,rt = leftmark,rightmark
#如果需要匹配的字符在正则表达式中时特殊字符,需要给予转义
if leftmark in special:
lf = '\%s'%leftmark
if rightmark in special:
rt = '\%s'%rightmark
pattern = recompile(r''+lf + '{0,}'+ rt)
matched = refindall(pattern,str1)
result = []
if matched:
#如果匹配成功了,就去头去尾,直接取中间的部分
for m in matched:
s = mreplace(leftmark, '')
s = sreplace(rightmark, '')
resultappend(s)
return result
else:
return None
if __name__ == '__main__':
print matchpattern("#abcsdfs%sdfsdf",'%','')
如果想把该目录下所有的文件都统计出来,包括子目录、子目录的子目录。。。
可以使用oswalk来找出目录下所有的文件
import os
print sum([len(x) for _, _, x in oswalk(ospathdirname("test"))])
#test是目录名
oswalk会递归遍历指定目录下的文件,返回值分别为当前文件夹完整路径,当前文件夹中的文件夹和文件夹中的文件。我们只需要文件,所以其他的都不取出来了,直接使用"_"占位就行了。
如果只是想统计出当前目录下的文件,不包括子目录的。就使用oslistdir,只统计是文件的个数:
len([x for x in oslistdir(ospathdirname(__file__)) if ospathisfile(x)])
在说oswalk前,我们先在ipython3中help一下,打印如下
oswalk返回一个生成器,每次遍历返回的对象是一个元组,元组中包含三个元素:
dirpath:当前遍历的文件夹的路径,类型为字符串;
dirname:当前遍历的文件夹下的子文件夹的名字,类型为列表;
filenames:当前遍历的文件夹下的文件的名字,类型为列表;
创建一个包含子文件夹和文件的walk文件夹,通过终端tree看一下目录结构:
我们通过for循环遍历oswalk()的返回结果
运行结果如下:
使用oswalk()获取文件夹下的文件大小:
对于文件,python通常是无法读取指定行的。不过是可以进行"曲线救国",但是这仅对文本文件生效,对于二进制文件,本身是没有行的概念的,讨论也没意义,下面是一种可能的解决方案。
path='c:\\documents'filename='readmetxt'
fullfilename='%s\\%s'%(path,filename)
def getContentByRowNumber(rownumber,filehandle):
oldfilePos=filehandletell()
i=0
filehandleseek(0)
while i<rownumber:
l=filehandlereadline()
if not l:
return None
content=filehandlereadline()
filehandleseek(oldfilePos)
return content
f=open(filename,'rt')
print(getContentByRowNumber(2,f))
以上就是关于Python获取文件信息全部的内容,包括:Python获取文件信息、如何获取目录下的文件数(一行Python)、【Python】os.walk的使用及获取文件夹下所有文件的大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)