码迷,mamicode.com
首页 > 其他好文 > 详细

文件系统的一些常用操作方法

时间:2017-10-07 22:55:54      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:如何   更新   循环   读取文件   解释   blog   imp   strip   描述符   

  2 #date:  17/10/5
  3 import time ,sys
  4 #练习文件的操作
  5 #实现三级菜单
  6 #今天任务
  7 
  8 #能调用方法的一定是对象
  9 ##三种基本的操作模式 r(只可读) w(只可写) a(追加)
 10 #一般步骤:创建文件对象 --->调用文件方法操作 ------>关闭文件
 11 #===========读
 12 #file = open(‘1‘,‘r‘,encoding = ‘utf8‘)#返回的是一个文件对象
 13 #re = file.read(5) #可以指定要读几个字符
 14 #file.write(‘哈哈哈哈‘) #注意这里会报错,读只能读,不能写
 15 #print(re)
 16 #file.close()
 17 
 18 
 19 #===========写
 20 # file = open(‘1‘,‘w‘,encoding = ‘utf8‘)#<class ‘_io.TextIOWrapper‘>
 21 # #file.write(‘五星红旗我为你自豪‘)  #首先会做一个清空的操作,然后把你要写的内容写入文件中
 22 # file.read()#这里会报错,因为写只能写不能再去读
 23 # file.close()
 24 
 25 
 26 #如果文件没有关闭,数据会被缓存下来,不会写入磁盘中
 27 # file = open(‘1‘,‘w‘,encoding=‘utf8‘)
 28 # file.write(‘开心快乐每一天‘)
 29 # time.sleep(30)
 30 # file.close()
 31 
 32 
 33 #================具体的操作方法
 34 #f = open(‘1‘,‘r‘,encoding=‘utf8‘)
 35 # print(f.read(2))
 36 # print(f.read(2)) #注意 :汉字在这里占一个单位(in Py3)
 37 # print(f.readline())
 38 # print(f.readline())
 39 # print(f.readline())#从光标位置开始读一行,无论是read还是readline/readdlines光标的位置都会发生变化
 40 # print(f.readlines())#返回一个列表,列表包含了文件的每一行内容,并且有换行符
 41 # #[‘开心快乐每一天3\n‘, ‘开心快乐每一天4\n‘, ‘开心快乐每一天5\n‘, ‘开心快乐每一天6‘]
 42 # f.close()
 43 
 44 
 45 #=================通过循环逐行读取文件内容
 46 # data = f.readlines()
 47 #number = 0
 48 # for i in data:
 49 #     number += 1
 50 #     if number == 5:
 51 #         i = ‘‘.join([i.strip(),‘handle\n‘])
 52 #     print(i.strip())
 53 # f.close()
 54 ##########对于大数据文件,要用以下方式(the best way):
 55 # number = 0
 56 # for file_content in f:#解释:这是for内部将f做成一个迭代器,用一行取一行
 57 #     number += 1
 58 #     if number == 5:
 59 #         file_content = ‘‘.join([file_content.strip(),‘handle\n‘])#取代万恶的+
 60 #     print(file_content.strip())
 61 # f.close()
 62 
 63 #=====基本操作
 64 # print(f.tell())  #0 作用:获取当前光标所在位置 *
 65 # print(f.read(2)) #开心
 66 # print(f.tell()) #返回6  一个中文3个字节在utf8中
 67 # print(f.read(2)) #快乐
 68 # print(f.tell())  #12
 69 # print(f.seek(0))  #移动光标到指定的位置 *
 70 # print(f.tell())
 71 # print(f.read(2))
 72 
 73 
 74 #==========进度条的实例
 75 #flush 作用把缓存里面的数据转移到磁盘上,可以用它做进度条
 76 #sys.stdout 作用可以在终端上显示某个内容
 77 #不加flush的时候:*并没有直接放入内存,而是放入缓冲区,暂时看不到,刷新完才能看,30个全放完结束了,一次性给用户看
 78 #终端也是文件对象,
 79 #
 80 # for i in range(30):
 81 #     sys.stdout.write("*") #如果不加flush,他是一个一个把*放入缓冲中,直到全部放完,他才把他们放入磁盘中
 82 #     sys.stdout.flush()#进入缓冲区立刻更新,放一个更新一个,不等你全部放完
 83 #     time.sleep(0.2)
 84 # f.close()
 85 
 86 
 87 #=======
 88 # f = open(‘1‘,‘w‘,encoding=‘utf8‘)
 89 # #truncate() 截断数据,不能再r模式下 ,默认不加参数是从开头一直截取
 90 # #在w模式下:先清空,再写,再截断 (没有意义)
 91 # #在a模式下:直接将指定位置后的内容截断
 92 # f.truncate(9)#如果是中文的话默认3个字节,他会把前两个字符保留,之后的内容截断
 93 # f.write(‘hello world‘)
 94 # f.truncate(5)
 95 # f.write(‘11hello world‘)
 96 #
 97 # f.close()
 98 
 99 #======r+ w+ a+
100 #fileno 文件描述符,整数唯一
101 
102 #a+ 光标默认在最后位置,开始写
103 #w+ 先清空,再写读
104 #f = open(‘1‘,‘r+‘,encoding=‘utf8‘)
105 
106 #------验证r+模式
107 #r+ 光标默认在第0个位置,但是是在最后位置开始写
108 #f = open(‘1‘,‘r+‘,encoding=‘utf8‘)
109 #print(f.tell())
110 #print(f.readline())
111 # f.write(‘ccckk‘)
112 
113 #------验证w+模式
114 #w+ 先清空,再写读
115 # f = open(‘1‘,‘w+‘,encoding=‘utf8‘)
116 # print(f.readline()) #因为先清空了,所以没有内容
117 # print(f.tell())# 0
118 # print(f.write(‘阿帕帕‘)) #开始写入
119 # print(f.tell())  #光标移动到了最后
120 # #print(f.seek(0)) #所以想看到就移动光标到开始位置
121 # print(f.readline()) #所以在读取还是没有
122 
123 #------验证a+模式
124 #a+ 光标默认在最后位置,开始写
125 #f = open(‘1‘,‘a+‘,encoding=‘utf8‘)
126 #print(f.tell()) #217
127 #print(f.readline())#读不到,因为光标在最后
128 #f.write(‘ccckk‘)
129 
130 
131 #-----终极问题如何修改:只能采取重新创建一个文件的思路
132 #例子:将第5行最后面追加个hello
133 #方法一:
134 # f_read = open(‘1‘,‘r‘,encoding=‘utf8‘)
135 # f_write = open(‘2‘,‘w‘,encoding=‘utf8‘)
136 # num = 0;
137 # for i in f_read:
138 #     num +=1
139 #     if num == 5:
140 #         i = ‘‘.join([i.strip(),‘hello\n‘])
141 #     f_write.write(i)
142 # f_read.close()
143 # f_write.close()
144 
145 #方法二 with 方法 同时管理多个文件对象(推荐使用这种,不用我们手动关闭文件了)
146 num = 0;
147 with open(1,r,encoding=utf8) as r, open(2,w,encoding=utf8) as w :
148     for i in r:
149         num +=1
150         if num == 5:
151             i = ‘‘.join([i.strip(),hello_girl\n])
152         w.write(i)

 

文件系统的一些常用操作方法

标签:如何   更新   循环   读取文件   解释   blog   imp   strip   描述符   

原文地址:http://www.cnblogs.com/sujunjun/p/7636046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!