• 文件读写的一些操作


    1.使用w或者w+打开一个文件时,open()函数会自动清空文件内容
    2.当使用w,w+,r,r+时打开一个不存在的文件,会自动创建文件
    3.缓冲问题:
    由于有缓冲区,我们写的内容先送入缓冲区,然后在于内存打交道,反过来一样,
    如果想直接写道内存可以用:f.flush方法或者open(filename [, access_mode] [,buffering])将第三个参数设置为0或者False,如果时1或者
    True就是带缓冲区,如果大于1则指点是缓冲区的大小,负数者是默认大小

    安全的打开一个文件方式:
    # 作者:薛志军
    f = open('Name', 'r', True )
    try:
    while True:
    ch = f.read(1) # 每次读取一个字符
    if not ch: break # 如果没有读取到文件数据,就跳出循环break
    print(ch, end=' ')
    finally:
    f.close()

    open()打开程序是总是使用的当前操作系统的字符集,windows上总是用的GBK字符集
    如果要使用的的文件与当前操作系统的字符集不匹配的时候:
    1.使用二进制读取,然后使用decode()方法恢复成字符串
    eg: F = open('read_test.py','rb','True')
    print(F.read().decode('utf-8'))
    F.close()
    2.利用open函数通过参数encoding参数指定字符集:
    eg:
    f = F = open('read_test.py','r','True','utf-8')
    while:
    ch = f.read(1)
    if not ch:break
    print(ch,end = '')
    f.close

    按行读取:
    1.readline([n]) 读取这一行的n个内容
    2.readlines()读取所有的行,返回的是个列表,每个元素是每一行,使用可利用这点对文件进行列表中的操作
    eg:
    f = open('read_test.py','r',True,'utf-8')
    for line in f.readlines():
    print(line,end = '')
    f.close()
    但是当文件很大时会大量消耗内存,其实文件本身就是可遍历的:
    eg:
    f = open('read_test.py','r',True,'utf-8')
    for line in f:
    print(line,end = '')
    f.close()
    也可以利用list()把文件转换成列表:print(list(open('read_test.py','r',True,'utf-8')))
    使用linecache模块随机读取行数,指定使用UTF-8字符集,也可以指定读取第几行的内容
    eg:
    import linecache
    print(linecache.getline('文件的一些基础内容',1))

    sys.stdin的一些基础操作:sys.stdin时类文件对象,可以利用这个获取用户的键盘输入,sys.stdout还可以实现输出到显示屏上:
    eg:
    import sys
    for line in sys.stdin:
    print('用户输入:', line, end=' ')
    sys.stdout还可以实现输出到显示屏上,可以利用这个打印进度条:
    import sys
    import time
    for i in range(50):
    sys.stdout.write('#')
    sys.stdout.flush()
    time.sleep(0.5)
    sys.stdin可以用来读取某个命令,此时就需要管道输入:前一个命令的输出,当成下一个命令的输入:cmd1|cmd2|。。。

    seek(n) 就是从当前位置将指针后移n位置
    tell()判断指针的位子
  • 相关阅读:
    Vcenter虚拟化三部曲----SQL Server 2008 R2 数据库安装
    Vcenter虚拟化三部曲----VMWare ESXi 5.5安装及配置
    SaltStack 自动化工具
    KVM虚拟化
    redis单节点集群
    linux--yum源,源码包
    运维工程师常用命令(持续更新)
    TARS基金会:构建微服务开源生态
    TarsGo新版本发布,支持protobuf,zipkin和自定义插件
    .NET 发送电子邮件
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/12290783.html
Copyright © 2020-2023  润新知