zoukankan      html  css  js  c++  java
  • Python--进阶处理5

    # 使用路径名来获取文件名,目录名,绝对路径等
    import os
    path = r'F:myProjectleana'
    # Get the last component of the path
    basename = os.path.basename(path)
    # Get the directory name
    dirname = os.path.dirname(path)
    print(basename, dirname)
    # Join path components together
    join_path = os.path.join('aa', 'bb', basename)
    print(join_path)
    # 展开用户的主目录
    expand = os.path.expanduser(path)
    print(expand)
    # 分离文件扩展名
    extension = os.path.splitext(path)
    print(extension)
    # 测试一个文件或目录是否存在
    flag1 = os.path.exists(path)
    flag2 = os.path.isfile(path)
    flag3 = os.path.isdir(path)
    flag4 = os.path.islink(path)
    realpath = os.path.realpath(path)
    print(flag1, flag2, flag3, flag4, realpath)
    # 获取元数据
    # 需要考虑文件权限的问题,特别是在获取元数据时候
    size = os.path.getsize(path)
    ctime = os.path.getmtime(path)
    print(size, ctime)
    # 获取文件系统中某个目录下的所有文件列表
    names = os.listdir(path)
    print('-----------------------------------------------------')
    def get_all_file(path, list_file):
    names = os.listdir(path)
    for name in names:
    if os.path.isfile(os.path.join(path, name)):
    list_file.append(name)
    else:
    get_all_file(os.path.join(path, name), list_file)
    return list_file
    print(get_all_file(path, []))

    # 对于文件名的匹配,可能会考虑使用glob 或fnmatch 模块
    import glob
    pyfiles = glob.glob(r'F:myProjectleana*.py')
    print(pyfiles)

    from fnmatch import fnmatch
    pyfiles = [name for name in os.listdir(path) if fnmatch(name, '*.py')]
    print(pyfiles)

    # 在程序执行时创建一个临时文件或目录,并希望使用完之后可以自动销毁掉
    # tempfile 模块中有很多的函数可以完成这任务
    # 创建一个匿名的临时文件
    from tempfile import TemporaryFile

    with TemporaryFile('w+t') as f:
    f.write('hello world ')
    f.write('test ')
    f.seek(0)
    data = f.read()
    # TemporaryFile() 、NamedTemporaryFile() 和TemporaryDirectory() 函数应该
    # 是处理临时文件目录的最简单的方式了,因为它们会自动处理所有的创建和清理步骤。
    # 在一个更低的级别,你可以使用mkstemp() 和mkdtemp() 来创建临时文件和目录
    # 为了获取真实的位置,可以使用tempfile.gettempdir() 函数

    # 序列化Python对象
    # 将一个Python 对象序列化为一个字节流,以便将它保存到一个文件、存储到数据库或者通过网络传输它
    # 对于序列化最普遍的做法就是使用pickle 模块
    import pickle

    ob = {"a":1, "b":2, "c":3}
    # f = open('E:/1.txt', 'wb')
    # pickle.dump(ob, f)
    # f.close()
    s = pickle.dumps(ob)
    print(s)
    # 为了从字节流中恢复一个对象,使用picle.load() 或pickle.loads() 函数
    f = open('E:/1.txt', 'rb')
    data = pickle.load(f)
    print(data)
    data1 = pickle.loads(s)
    print(data, data1)

    # 有些类型的对象是不能被序列化的。这些通常是那些依赖外部系统状态的对象,
    # 比如打开的文件,网络连接,线程,进程,栈帧等等。用户自定义类可以通过提
    # 供getstate () 和setstate () 方法来绕过这些限制
    # 用户自定义类可以通过提供getstate () 和setstate () 方法来绕过这些限制。
    # 如果定义了这两个方法,pickle.dump() 就会调用getstate () 获取序列化的对象。
    # 类似的, setstate() 在反序列化时被调用。





  • 相关阅读:
    设计模式--22、状态模式
    设计模式--21、备忘录模式
    设计模式--20、迭代器模式
    关于分布式事务、两阶段提交协议、三阶提交协议
    分布式系统的一致性探讨
    分布式系统的BASE理论
    分布式系统的CAP理论
    Kafka集群环境搭建
    Elasticsearch插件head的安装(有坑)
    centos6 x64安装elasticsearch5.5.2启动报错
  • 原文地址:https://www.cnblogs.com/fqfanqi/p/8434722.html
Copyright © 2011-2022 走看看