Python获取文件信息

Python获取文件信息,第1张

#-- 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的使用及获取文件夹下所有文件的大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10213996.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存