Python获取文件信息
(Python2.5,Windows)指示文件路径后,如何获取该文件的名称大小创建日期等信息?另如何在字符串中截取两个指定符号之间的内容?(比如在"#abcd%[qwer...
(Python2.5,Windows)
指示文件路径后,如何获取该文件的名称大小创建日期等信息?
另如何在字符串中截取两个指定符号之间的内容?(比如在"#abcd%[qwer]"中截取"abcd"和"qwer") 展开
指示文件路径后,如何获取该文件的名称大小创建日期等信息?
另如何在字符串中截取两个指定符号之间的内容?(比如在"#abcd%[qwer]"中截取"abcd"和"qwer") 展开
2个回答
展开全部
#-*- coding: utf-8 -*-
import os
#已知文件名的情况下,可以用这个函数
def getFileInfo(filepath):
info = {}
if os.path.isfile(filepath):
info['TimeCreated'] = os.path.getctime(filepath)
info['TimeModified'] = os.path.getatime(filepath)
info['Size'] = os.path.getsize(filepath)
return info
# 如果只知道文件根目录,但是不知道具体的文件路径,
# 可以先用os.listdir获得文件和文件夹列表
#-------------------分界线----------------------
# 这是回答你的第二个问题。如何找到一个字符串中指定两个字符中间的字符串
# 这里用的是正则表达式
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 = re.compile(r''+lf + '.{0,}'+ rt)
matched = re.findall(pattern,str1)
result = []
if matched:
#如果匹配成功了,就去头去尾,直接取中间的部分
for m in matched:
s = m.replace(leftmark, '')
s = s.replace(rightmark, '')
result.append(s)
return result
else:
return None
if __name__ == '__main__':
print matchpattern("#abcsdfs%sdfsdf*",'%','*')
import os
#已知文件名的情况下,可以用这个函数
def getFileInfo(filepath):
info = {}
if os.path.isfile(filepath):
info['TimeCreated'] = os.path.getctime(filepath)
info['TimeModified'] = os.path.getatime(filepath)
info['Size'] = os.path.getsize(filepath)
return info
# 如果只知道文件根目录,但是不知道具体的文件路径,
# 可以先用os.listdir获得文件和文件夹列表
#-------------------分界线----------------------
# 这是回答你的第二个问题。如何找到一个字符串中指定两个字符中间的字符串
# 这里用的是正则表达式
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 = re.compile(r''+lf + '.{0,}'+ rt)
matched = re.findall(pattern,str1)
result = []
if matched:
#如果匹配成功了,就去头去尾,直接取中间的部分
for m in matched:
s = m.replace(leftmark, '')
s = s.replace(rightmark, '')
result.append(s)
return result
else:
return None
if __name__ == '__main__':
print matchpattern("#abcsdfs%sdfsdf*",'%','*')
更多追问追答
追问
多谢,第一问里输入路径时如果不希望调用函数时才输入原始字符串符r的话那么r应该放在哪里呢?
追答
能不能再解释一下问题,应用的时候直接把路径放进去调用函数应该就可以返回一个字典,里面有你要的关于这个文件的信息,你是说获得文件列表的哪一步么。不好意思,木有理解你的问题,求详细的解释,你现在需要什么。
展开全部
# coding:utf8
import os
import time
import re
if __name__ == '__main__':
filepath = r'D:\Codes\zhaoqian1.py'
if os.path.isfile(filepath):
filename = filepath.split("\\")[-1]
filesize = str(os.path.getsize(filepath))+'bit'
filechtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(os.path.getatime(filepath)))
print filename,filesize,filechtime
str = "#abcd%[qwer]"
strre = r"\w+"
reopt = re.compile(strre)
print reopt.findall(str)
结果:
zhaoqian1.py 737bit 2014-10-04 22:29:45
['abcd', 'qwer']
我也是百度的,其实可以查python的标准库:
1、python 获取文件信息,参见:
http://jingyan.baidu.com/article/6dad5075cfbd62a122e36e44.html
(其中牵涉到时间戳的处理:http://www.2cto.com/kf/201401/276088.html)
2、截取指定字符,建议用re模块,参见:
http://www.cnblogs.com/sevenyuan/archive/2010/12/06/1898075.html
(re的使用是需要配合正则表达式的:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询