zoukankan      html  css  js  c++  java
  • 008文件操作

    文件操作之基本流程
    #文本
    近日,上市药企——浙江莎普爱思药业股份有限公司频遭质疑。
    12月2日,一篇名为《一年卖出7.5亿的洗脑“神药”,请放过中国老人》的文章称,
    多位眼科医生并不认可莎普爱思滴眼液的“白内障防治功效”。质疑者认为,
    莎普爱思滴眼液是“假科普,真营销”,通过广告误导患者。
    针对质疑,莎普爱思3日晚发布的公告称,
    0.5%苄达 赖氨酸滴眼液已于上世纪90年代通过了临床试验,
    是一种安全的、有效的抗白内障药物。假的

    #‘r’打开,需要编码
    f=open('测试','r',encoding='utf8')
    print(f.read(10))

    #‘w’打开,也需要编码,
    f1=open('测试','w',encoding='utf8')
    #print(f1.read())
    f1.write('hello')
    f1.write('world!爱')
    f.close()
    f1.close()
    #‘a’打开,也要编码,和‘w’方式一样,不能够读取
    要换行要加

    #读取一行
    s=f.readline()

    #读取多行,读取是一个列表
    s=f.readlines()
    for  i  inf.readlines():  #有.strip()和没有.strip()的区别
        print(i.strip())

    number=0
    for  i  inf.readlines():
        number += 1
        if  number == 6:
            i= ''.join([i.strip(),'iaiqiu'])  #字符串连接,取代万恶的"+"
        print(i.strip())
    直接用列表操作更快
    data=f.readlines()
    data[5]=''.join([data[5],'iaiqiu'])

    上面都是闹着玩的,以后读文件肯定不会这样,不可能全部读取到内存里,因为内存可能没有那么大。
    for  i  inf:
        print(i.strip())
    这种才是以后使用的,最优的。

    #f.tell()和f.seek()方法,tell()方法返回文件位置
    print(f.tell())
    print(f.read(10))
    print(f.tell())

    f.seek(0)
    print(f.read(10))
    f.close()

    #flush()方法,sys.stdout是python编辑框文件,idle也是一个文件
    importsys,time
    for  i  inrange(20):
        sys.stdout.write('#')
        sys.stdout.flush()
        time.sleep(0.2)

    #truncate()方法,截断,留下前面的。
    f.truncate(20)#中文有点问题,像是删除英文字符单位
    近日,上市药 :最后那个字,3个字符的,被截成2个没有办法显示了

    #r+格式打开文本
    1)直接开始写
    filename='suibian'
    f=open(filename,'r+',encoding='utf8')
    #print(f.readline())
    f.write('lalalalal')

    近日,上市药企——浙江莎普爱思药业股份有限公司频遭质疑。
    12月2日,一篇名为《一年卖出7.5亿的洗脑“神药”,请放过中国老人》的文章称,

    lalalalal上市药企——浙江莎普爱思药业股份有限公司频遭质疑。
    12月2日,一篇名为《一年卖出7.5亿的洗脑“神药”,请放过中国老人》的文章称,
    ::会有文本被覆盖。

    2)读了后再写,在最后追加内容

    #w+格式打开
    还是先清空文件

    #a+格式打开
    光标在最后。
    用最多的是r+格式打开

    #同时管理多个文件对象
    with   open(filename,'r',encoding='utf8')as   f_read,open(filename,'w',encoding='utf8')  as    f_write:
        pass

    #01初级代码

     1 #__author: _nbloser
     2 #date: 2017/12/10
     3 # shaoguan = {'仁化', '始兴', '乐昌', '南雄'}
     4 # jiangmeng = {'开平', '蓬江', '台山', '鹤山', '恩平'}
     5 # guangdong_province = {'韶关':shaoguan, '江门':jiangmeng}
     6 # nanchang = {'东湖', '西湖', '新建', '安义', '进贤'}
     7 # jingdezhen = {'昌江', '珠山', '乐平', '浮梁'}
     8 # jiangxi_province = {'南昌': nanchang, '景德镇': jingdezhen}
     9 # provinces = {'广东': guangdong_province, '江西': jiangxi_province} #事先写入文件
    10 f = open('province.txt', 'r', encoding='utf8')
    11 data = eval(f.read())
    12 f.close()
    13 
    14 
    15 current_layer = data
    16 parent_layer = []
    17 # exit_flag = False
    18 while True:
    19     for i in current_layer:
    20         print(i)
    21     choice = input(">>")
    22     if choice in current_layer:
    23         parent_layer.append(current_layer)
    24         current_layer = current_layer[choice]
    25     elif choice == 'b':
    26         current_layer = parent_layer.pop()
    27     elif choice == 'q': break
    28     elif choice == 'i':
    29         insert = input("输入你要添加的内容:")
    30         current_layer.setdefault(insert, { })
    31         with open('province.txt', 'w', encoding='utf8') as f_write:
    32             f_write.write(str(data))
    33             f_write.flush()
    34     else:
    35         print("查无此项")
    View Code
  • 相关阅读:
    代理模式
    spring aop
    mybatis从入门到精通(其他章节)
    mybatis从入门到精通(第6章)
    Java中Compareable和Comparator两种比较器的区别
    Java的equals方法的使用技巧
    Dubbo的配置过程,实现原理及架构详解
    什么是IPFS?IPFS与区块链有什么关系
    leetCode242 有效的字母异位词
    需要多个参数输入时-----------------考虑使用变种的Builder模式
  • 原文地址:https://www.cnblogs.com/-nbloser/p/8019505.html
Copyright © 2011-2022 走看看