IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]8.6 tempfile--临时文件和目录处理

    caimouse发表于 2016-03-31 21:06:35
    love 0

    本模块主要提供了产生临时文件或临时目录,支持所有操作系统平台。创建临时文件时,不再使用进程ID来命名,而使用6位随机字符串进行命名。

    tempfile.TemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix='', prefix='tmp', dir=None)

    返回一个文件类似的临时数据处理对象。它是调用函数mkstemp()来创建文件。当这个临时文件关闭时,就会自动地删除这个文件。参数mode默认是w+b,表示这个文件未关闭之前可以进行读写,同时使用了二进制的方式,以便所有数据都可以被保存进去。参数dir、prefix和suffix都是传送给函数mkstemp()使用。

    例子:

    #python 3.4

    import tempfile

     

    fp = tempfile.TemporaryFile()

    fp.write(b'blog.csdn.net/caimouse')

    fp.seek(0)

    print(fp.read())

    fp.close()

    结果输出如下:

    b'blog.csdn.net/caimouse'

     

    tempfile.NamedTemporaryFile(mode='w+b', buffering=None, encoding=None, newline=None, suffix='', prefix='tmp', dir=None, delete=True)

    本函数也是创建一个临时文件,与函数TemporaryFile()区别是提供了一个可视化的名称,可以通过属性name来获取文件名称。如果这个文件没有删除之前,使用这个名称是可以重新打开这个文件。参数delete是表示文件是否在关闭之后自动删除,如果设置为True则在关闭之后自动删除,否则不会删除。

    例子:

    #python 3.4

    import tempfile

     

    with  tempfile.NamedTemporaryFile() as fp:

        fp.write(b'blog.csdn.net/caimouse')

        fp.seek(0)

        print(fp.read())

        print(fp.name)

    结果输出如下:

    b'blog.csdn.net/caimouse'

    C:\Users\tony\AppData\Local\Temp\tmpns5busi8

     

    tempfile.SpooledTemporaryFile(max_size=0, mode='w+b', buffering=None, encoding=None, newline=None, suffix='', prefix='tmp', dir=None)

    本函数的功能与TemporaryFile()是一样的,只不过它提供了在内存里缓存数据的功能,只有写入的数据长度大于max_size时,才会写入到文件,或者调用fileno()函数时写入到文件。

    例子:

    #python 3.4

    import tempfile

     

    with  tempfile.SpooledTemporaryFile(max_size = 1024) as fp:

        fp.write(b'blog.csdn.net/caimouse')

        fp.seek(0)

        print(fp.read())

        print(fp.name)

    结果输出如下:

    b'blog.csdn.net/caimouse'

    None

     

    tempfile.TemporaryDirectory(suffix='', prefix='tmp', dir=None)

    本函数使用函数mkdtemp()来创建临时目录。目录的名称可以从name属性取回来。如果想明确地删除,可以调用函数cleanup()来删除。

    例子:

    #python 3.4

    import tempfile

     

    with  tempfile.TemporaryDirectory() as tmpDir:   

        print('created temporary directory', tmpDir)

    结果输出如下:

    created temporary directory C:\Users\tony\AppData\Local\Temp\tmpn1dspyv6

     

    tempfile.mkstemp(suffix='', prefix='tmp', dir=None, text=False)

    使用最安全的办法创建一个临时文件。参数suffix是用来指明文件名称的后缀;参数prefix是用来指明文件名称的前缀;参数dir是用来指定创建在临时目录下创建的子目录;参数text是用来指明使用文本还是二进制的方式打开。

    例子:

    #python 3.4

    import tempfile

     

    f = tempfile.mkstemp()  

    print('created temporary directory', f)

    结果输出如下:

    created temporary directory (3, 'C:\\Users\\tony\\AppData\\Local\\Temp\\tmpzawnzdyj')

     

    tempfile.mkdtemp(suffix='', prefix='tmp', dir=None)

    使用最安全的方法创建一个临时目录。参数suffix、prefix和dir与上面函数mkstemp()里的参数一样。

    例子:

    #python 3.4

    import tempfile

     

    f = tempfile.mkdtemp()  

    print('created temporary directory', f)

    结果输出如下:

    created temporary directory C:\Users\tony\AppData\Local\Temp\tmp85x3176v

     

    tempfile.mktemp(suffix='', prefix='tmp', dir=None)

    本函数是创建一个临时文件名称,将来不再使用。

     

    tempfile.tempdir

    这个成员变量保存了临时目录里的路径。如果是空值,那么它会查找系统临时目录来替换它。

    例子:

    #python 3.4

    import tempfile

     

    f = tempfile.mkdtemp()  

    print('created temporary directory', f)

    print(tempfile.tempdir)

    结果输出如下:

    created temporary directory C:\Users\tony\AppData\Local\Temp\tmp0j9kg77k

    C:\Users\tony\AppData\Local\Temp

     

    tempfile.gettempdir()

    返回当前选择创建临时文件的目录。

    例子:

    #python 3.4

    import tempfile

     

    f = tempfile.mkdtemp()  

    print('created temporary directory', f)

    print(tempfile.tempdir)

    print(tempfile.gettempdir())

    结果输出如下:

    created temporary directory C:\Users\tony\AppData\Local\Temp\tmpzws_qvr4

    C:\Users\tony\AppData\Local\Temp

    C:\Users\tony\AppData\Local\Temp

     

    tempfile.gettempprefix()

    返回用来创建临时文件的前缀。

    例子:

    #python 3.4

    import tempfile

     

    f = tempfile.mkdtemp()  

    print('created temporary directory', f)

    print(tempfile.tempdir)

    print(tempfile.gettempdir())

    print(tempfile.gettempprefix())

    结果输出如下:

    created temporary directory C:\Users\tony\AppData\Local\Temp\tmpmcpgwryt

    C:\Users\tony\AppData\Local\Temp

    C:\Users\tony\AppData\Local\Temp

    tmp


    蔡军生   QQ:9073204  深圳



沪ICP备19023445号-2号
友情链接