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’方式一样,不能够读取
要换行要加\n

#读取一行
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

 

posted @ 2017-12-11 01:10  Alos403  阅读(272)  评论(0编辑  收藏  举报