`
hunix
  • 浏览: 21859 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Python获取文件信息-PHP Blog

阅读更多



import os
import sys
from UserDict import UserDict

def stripnulls(data):
    "strip whitespace and nulls"
    return data.replace("\00", " ").strip()

class FileInfo(UserDict):
    "store file metadata"
    def __init__(self, filename=None):
        UserDict.__init__(self)
        self["name"] = filename
    
class MP3FileInfo(FileInfo):
    "store ID3v1.0 MP3 tags"
    tagDataMap = {"title"   : (  3,  33, stripnulls),
                  "artist"  : ( 33,  63, stripnulls),
                  "album"   : ( 63,  93, stripnulls),
                  "year"    : ( 93,  97, stripnulls),
                  "comment" : ( 97, 126, stripnulls),
                  "genre"   : (127, 128, ord)}
    
    def __parse(self, filename):
        "parse ID3v1.0 tags from MP3 file"
        self.clear()
        try:
            fsock = open(filename, "rb", 0)
            try:
                fsock.seek(-128, 2)
                tagdata = fsock.read(128)
            finally:
                fsock.close()
            if tagdata[:3] == 'TAG':
                for tag, (start, end, parseFunc) in self.tagDataMap.items():
                    self[tag] = parseFunc(tagdata[start:end])
        except IOError:
            pass

    def __setitem__(self, key, item):
        if key == "name" and item:
            self.__parse(item)
        FileInfo.__setitem__(self, key, item)

def listDirectory(directory, fileExtList):
    "get list of file info objects for files of particular extensions"
    fileList = [os.path.normcase(f) for f in os.listdir(directory)]
    fileList = [os.path.join(directory, f) for f in fileList \
                if os.path.splitext(f)[1] in fileExtList]
    def getFileInfoClass(filename, module=sys.modules[FileInfo.__module__]):
        "get file info class from filename extension"
        subclass = "%sFileInfo" % os.path.splitext(filename)[1].upper()[1:]
        return hasattr(module, subclass) and getattr(module, subclass) or FileInfo
    return [getFileInfoClass(f)(f) for f in fileList]

if __name__ == "__main__":
    for info in listDirectory("/music/_singles/", [".mp3"]):
        print "\n".join(["%s=%s" % (k, v) for k, v in info.items()])
        print
分享到:
评论

相关推荐

    PyPI 官网下载 | cos-python-sdk-v5-1.8.6.tar.gz

    2. **下载文件**:获取COS中的对象并将其保存到本地,也可以实现断点续传功能,确保大文件下载的可靠性。 3. **管理存储桶**:创建、删除、列举存储桶,以及设置存储桶的权限和生命周期规则。 4. **对象操作**:包括...

    python版-百家号-seleiunm-全自动发布文案-可多账号-多文案-解放双手 -附带seleiunm源码-二次开发可用

    在实际操作中,首先需要安装必要的Python环境和依赖库,然后配置seleiunm的设置文件,包括账号信息、文案内容、发布计划等。运行程序后,工具会按照设定执行自动发布任务。为了保证账号的安全,建议遵循百家号的使用...

    Python库 | wikiapi-2.0.8-py2.py3-none-any.whl

    `wikiapi` 是一个专门用于与维基百科等MediaWiki API交互的Python库,它简化了从这些在线百科全书获取数据的过程。这个库的版本为2.0.8,表明它是经过多次迭代和优化后的稳定版本,兼容Python 2和Python 3,这从...

    Python库 | pywikiapi-1.2.0-py2.py3-none-any.whl

    本文将详细讲解`pywikiapi`库的特性、用途以及安装方法,帮助开发者更好地利用这个库进行信息获取和处理。 `pywikiapi`是Python的一个第三方库,它为开发者提供了一个简单且直观的接口,可以直接与维基媒体基金会...

    Python库 | mwoauth-0.3.6-py3-none-any.whl

    由于我们已经有一个名为“mwoauth-0.3.6-py3-none-any.whl”的压缩包文件,我们可以直接通过pip进行安装,无需从PyPI(Python Package Index)下载。只需在命令行中输入以下命令: ```bash pip install mwoauth-...

    知乎x-zse-96 文件头 JS解密

    “文件头”通常指的是文件的起始部分,它包含了关于文件类型、格式、编码等信息。在JS(JavaScript)文件中,文件头可能包含执行脚本的元数据或特定的加密指示。在解密过程中,识别和解析这些文件头是至关重要的步骤...

    Python库 | blackfire-1.4.5-cp37-cp37m-win_amd64.whl

    安装`blackfire`库非常简单,你可以通过Python的包管理器`pip`来安装这个whl文件。首先,确保你的Python环境是3.7版本,并且是64位的Windows系统。然后,在命令行中输入以下命令: ```bash pip install path\to\...

    Python库 | CodeIntel-2.0.0b26-cp35-cp35m-manylinux1_x86_64.whl

    在安装CodeIntel-2.0.0b26-cp35-cp35m-manylinux1_x86_64.whl文件时,需确保你已拥有Python 3.5环境。可以通过Python的`pip`包管理器来安装此whl文件: ```bash pip install /path/to/CodeIntel-2.0.0b26-cp35-cp35m...

    python获取手机号码归属地

    1、安装模块:pip install phone 2、执行方法:python find.py 电话号码文件

    一个把PHP格式化成Python风格的在线工具

    描述中提到的是这个工具的特性,即它是一个在线工具,这意味着用户无需下载和安装任何软件,只需要在浏览器中访问该服务的网址,就可以上传PHP文件并获取格式化的Python风格的PHP代码。这种便捷性使得它对于开发者来...

    js实现文件上传-demo02

    2. **File对象**: 当用户选择文件后,`<input type="file">`会产生一个或多个File对象,这些对象包含了文件的相关信息,如文件名、大小、类型等。例如,我们可以通过`event.target.files`获取到用户选择的文件列表。...

    用PHP调用Python程序,实用且非常容易地集成到你的PHP项目中。-php-python.zip

    - 使用相对路径或安全的绝对路径来执行Python脚本,避免访问到敏感文件。 - 考虑使用权限控制,限制PHP和Python的执行环境。 六、性能考虑 频繁的PHP与Python交互可能影响性能。如果需要高性能,考虑使用其他方式...

    获取上传文件的流

    无论选择哪种方式,获取文件流后,我们都可以进行进一步的操作,如保存到磁盘、存储到云服务、进行文件格式转换,或者进行内容检测等。确保正确处理文件流不仅可以提高程序的效率,还能有效防止内存问题,确保系统的...

    Python-冲顶大会辅助答题PHP版

    在这个项目中,PHP可能被用作后端处理,与Python前端进行数据交互,处理用户请求,例如接收来自Python脚本的答题信息,以及发送回服务器的响应。 冲顶大会是一款流行的在线知识竞赛应用,用户需要在有限的时间内...

    使用Python获取小红书的几千条一级评论+二级评论+展开评论

    根据笔记的URL获取所有的评论后并生成CSV文件,常规版,未用异步的方式,只需要替换自己的cookie既可。评论内容包含以下内容:笔记链接页码评论者昵称评论者ID评论者主页链接评论时间评论IP属地评论点赞数评论级别...

    Python-pricemonitorphp京东价格监控提醒用户抢购

    【Python-pricemonitorphp京东价格监控提醒用户抢购】是一个项目,旨在帮助用户自动监控京东商城的商品价格,当商品价格达到用户设定的预期值时,系统会通过邮件通知用户,以便用户及时抢购。该项目结合了Python和...

    详解python上传文件和字符到PHP服务器

    这段PHP代码首先检查是否有名为`myFile`的上传文件,然后获取文件名、类型等信息,你可以根据实际需求扩展这部分代码,比如将文件保存到服务器某个目录,或执行其他验证和处理操作。 总结来说,Python中上传文件和...

    python 抓取百度云分享数据,百度云最新接口抓取分享链接

    在Python编程领域,网络爬虫是一项重要的技能,用于自动化地获取网页信息。在这个主题中,我们将探讨如何使用Python来抓取百度云分享的数据,特别是利用百度云最新的API接口。这通常涉及到请求、解析HTML或JSON响应...

Global site tag (gtag.js) - Google Analytics