Python 3 —— 文件操作

Python 3学习—— 文件操作

 写此博客 是为了激励自己,并且将自己的心得以及遇到的问题与人分享

一、课堂笔记

  1.一切皆文件  对文件的操作一般都三个过程:打开、操作、关闭。

  f = open ('小文件','r',encoding = 'utf8') # r 为读模式 w 为写模式  整体为得到文件的操作句柄

  data = f.read()
  print(data)
  f.close()

  打开文件,得到文件的操作句柄 

  通过文件操作句柄对文件进行操作

  关闭文件 

  2.read方法 

   read(5) 取出来的是5个字符,在Python3 中中文算是一个字符,英文为一个字母一个字符。

  3.write方法

  f = open ('小文件','w',encoding = 'utf8') # r 为读模式 w 为写模式 a 为追加模式 
                           # w 的时候会清空文档内容再写 a的时候会直接追加
  f.write('helloworld')
  f.close()   
  ## 执行效果:以前文件中的内容都不见了,只有一个'helloworld'

  4.close方法

    只要打开一个文件,就要关闭它。

  5.模式

     r 模式  只可读

    w 模式  只可写 使用w模式打开后,先将文件进行初始化,文件为空了就。

    a 模式  追加模式      

    w+ 打开文件并读写  1. 文件存在,则清空(也即写入空); 2. 文件不存在,则创建文件 ; 3. 文件流定位到开始位置, 所以read() 会得到空。

    r+  打开文件并读写   1. 文件存在,打开文件,文件指针定位到文件开始位置; 2. 文件不存在, 则报错文件不存在。

    a+  打开文件并读添   1. 文件存在,打开文件,文件指针定位到文件开始位置,但不清空;2.  文件不存在,创建文件; 3. 打开后读取时,在文件开头位置,4. 写入时,添加到文章末尾,并且指针位于添加后的末尾,所以再次读取会乱码。

  6.readline() 只读一行  readlines() 读取全部放在一行中

  在文件中取出某一行,对其操作。

#author:"LFD"
#date: 2018/2/13
data = open('lfd','r',encoding='utf8') #文件的操作句柄(对象),只有拿到它之后才能进行操作。
num = 0
for i in data.readlines():
    num += 1
    if num == 6:
        i = ''.join((i.strip(),'ssss'))  # 通过number自己定义的一个变量来对文件的某一行进行操作
    print(i.strip())
data.close()

   另一种取出文件内容的方法  跟迭代器有关 最好用如下这种方式

#author:"LFD"
#date: 2018/2/13
data = open('lfd','r',encoding='utf8') #文件的操作句柄(对象),只有拿到它之后才能进行操作。

for i in data: #这是for 内部将 data对象做成了一个迭代器,用一个取一个,对于文本来说,用一个取一行。data本神并不是一个迭代器
    print(i.strip())

data.close()

  7.文件操作一系列的方法:

    readline() 取出文件的一行 ;

    readlines() 取出文件的多行,得到的是一个列表,把每一个readline做成一个字符串放到列表中去了。

      上面虽然可以取出来,但会有多余的 \n 换行符,使用 .strip() 方法来去掉多余的 \n

      字符串拼接最好不要用 + ,用 join() 方法会更好一些。

    tell() 打印光标位置 英文字符占一个 中文字符占3个 

    seek() 调整光标的位置   data.seek(0)----这么用

    flush()  把缓存中的数据保存到磁盘上去,可以用来做进度条

  import sys,time
  for i in range(30):
      sys.stdout.write("*")
      sys.stdout.flush()  # 不会进入缓冲区,刚进入缓冲区存入硬盘
      time.sleep(0.2)    

    truncate(5)  截断,从第五个光标位置处,后面的内容全部截断删除掉了。文件打开方式要使用 ' a ' 模式。使用 ' w '模式打开文件再使用该方法没有什么意义。

  8.终极问题 对文本进行修改

#author:"LFD"
#date: 2018/2/13
f_read = open('lfd','r',encoding='utf8')
f_write = open('lfd3','w',encoding='utf8')
number = 0
for line in f_read:
    number += 1
    if number == 5:
        line = ''.join([line,'xxx\n'])  #这个是对文件某行末尾进行追加
    #   line = 'hello world' 这个是 对文件某行内容覆盖书写
    f_write.write(line)


f_read.close()

  9.将字典型数据转换成字符型存入文件中,再使用eval() 方法将字符型数据转回字典型数据。

a = str({'beijing':{1:111}})
print(type(a))
print(a)
a = eval(a) # 将字符串类型的'a'转换成字典型的 'a'
print(type(a))
print(a['beijing'])

  10.with 语句 with() 方法

  以后打开文件尽量采用 with 方法来打开

f = open('lfd','r') #必须要手动关闭文件
f.readline()
f.read()
f.close()

with open('lfd','r') as f: # 退出了with代码块会自动将文件关闭
    f.readline()
    f.read()

print('hello world')

  with 还支持同时对多个文件的上下文进行管理

   同时管理多个文件对象创建

with open('lfd','r') as f_read, open('lfd2','w') as f_write:
    for line in f_read:
        f_write.write(line)

 

 

二、心得

  在过年期间到现在,经历了很多事情,包括是否还要从事这个专业,是否要继续学习下去。中间间隔了这么久,也认认真真的去思考了很多很多东西。最后,还是回来了。在我心里,做一事就要像一事,连这点小事都做不好,干什么都成不了。

  这章的学习可谓是辛苦的不行,本来2-3天的内容硬是看了足足半个月,虽然中间夹杂着过年。回到了学校,步入了正轨,但对Python的学习还是不会落下。

 

posted @ 2018-03-11 13:50  金金金与泽泽泽  阅读(152)  评论(0编辑  收藏  举报