py plistlib

来源:互联网 发布:淘宝卧室门帘 编辑:程序博客网 时间:2024/04/30 07:36

plistlib提供一系列对.plist文件操作的函数

读取.plist

#!/usr/bin/env python#coding=utf-8#reading_plist_files.pyimport plistlibimport osimport glob#设置一个根目录calendar_root = os.path.expanduser('~/Library/Calendars')#返回~/Library/Calendars/*.caldav/*.calendar和~/Library/Calendars/*.calendar匹配的所有路径calendar_directories = (    #搜索 ~/Library/Calendars/*.caldav/*.calendar    glob.glob(os.path.join(calendar_root, '*.caldav', '*.calendar')) +    #搜索 ~/Library/Calendars/*.calendar    glob.glob(os.path.join(calendar_root, '*.calendar'))    )#遍历得到的路径for dirname in calendar_directories:    #拼接一个新路径,目的是找到Info.plist文件    info_filename = os.path.join(dirname, 'Info.plist')    #该文件是否存在    if os.path.isfile(info_filename):        #利用plistlib.readPlist函数读区Info.plist文件        info = plistlib.readPlist(info_filename)        #获取Info.plist中键为Checked的值,是否存在        if info.get('Checked'):            print info['Title']

写.plist

#!/usr/bin/env python#coding=utf-8#writing_plist_files.pyimport plistlibimport datetimeimport tempfileimport os#如果你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,#那么用TemporaryFile函数创建临时文件是最好的选择。其他的应用程序是无法找到或打开这个文件的,#因为它并没有引用文件系统表。用这个函数创建的临时文件,关闭后会自动删除。import tempfiled = { 'an_int':2,      'a_bool':False,      'the_float':5.9,      'simple_string':'This string has no special characters.',      'xml_string':'<element attr="value">This string includes XML markup &nbsp;</element>',      'nested_list':['a', 'b', 'c'],      'nested_dict':{ 'key':'value' },      'timestamp':datetime.datetime.now(),      }#如果临时文件会被多个进程或主机使用,那么建立一个有名字的文件是最简单的方法。#这就是NamedTemporaryFile要做的,可以使用name属性访问它的名字output_file = tempfile.NamedTemporaryFile()try:    plistlib.writePlist(d, output_file)    output_file.seek(0)    print output_file.read()    print output_file.namefinally:    #单引号和双引号的区别,单引号'Let/'s go'    print "close"    output_file.close()print 'Exists after close:', os.path.exists(output_file.name)

读写二进制的.plist

#!/usr/bin/env python#coding=utf-8#binary_property_data.pyimport plistlibd = { 'binary_data':plistlib.Data('somestring you plistl Data file. \0'),}print plistlib.writePlistToString(d)DATA = """<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict>    <key>binary_data</key>    <data>    c29tZXN0cmluZyB5b3UgcGxpc3RsIERhdGEgZmlsZS4gAA==    </data></dict></plist>"""m = plistlib.readPlistFromString(DATA)#输出'somestring you plistl Data file. \x00'print repr(m['binary_data'].data)#输出somestring you plistl Data file.print m['binary_data'].data
0 0