python基础篇08-文件操作

文件操作基本流程

  1. 打开文件,得到文件句柄并赋值给一个变量;
  2. 通过句柄对文件进行操作
  3. 关闭文件

   现有文件如下:

1 昨夜寒蛩不住鸣。
2 惊回千里梦,已三更。
3 起来独自绕阶行。
4 人悄悄,帘外月胧明。
5 白首为功名,旧山松竹老,阻归程。
6 欲将心事付瑶琴。
7 知音少,弦断有谁听。

  对上述文件进行操作:

1 f = open(‘小重山‘,‘r‘,encoding=‘utf8‘) #打开文件,读模式
2 data=f.read()#获取文件内容3 print(data)4 f.close() #关闭文件

  注意 if in the win,小重山文件是utf8保存的,打开文件时open函数是通过操作系统打开的文件,而win操作系统默认的是gbk编码,所以直接打开会乱码,需要f=open(‘小重山‘,encoding=‘utf8‘)。

文件打开模式

 1 ========= ===============================================================
 2     Character Meaning
 3     --------- ---------------------------------------------------------------
 4     ‘r‘       open for reading (default)
 5     ‘w‘       open for writing, truncating the file first  #文件如果不存在就会创建一个文件;创建文件对象时就会将文件中的内容清空。
 6     ‘x‘       create a new file and open it for writing
 7     ‘a‘       open for writing, appending to the end of the file if it exists
 8     ‘b‘       binary mode
 9     ‘t‘       text mode (default)
10     ‘+‘       open a disk file for updating (reading and writing)
11     ‘U‘       universal newline mode (deprecated)12     ‘r+‘      读写模式13     ‘w+‘      写读模式14     ‘a+‘      追加读模式
15     ========= ===============================================================

  r+:读是从0位置开始读,写是在文件最后位置写

 1 f=open(‘小重山‘,‘r+‘,encoding=‘utf8‘)
 2 f.write(‘岳飞‘)
 3 f.close()
 4 输出:
 5 昨夜寒蛩不住鸣。
 6 惊回千里梦,已三更。
 7 起来独自绕阶行。
 8 人悄悄,帘外月胧明。
 9 白首为功名,旧山松竹老,阻归程。
10 欲将心事付瑶琴。
11 知音少,弦断有谁听。岳飞

  w+:先清空文件,再写读,读写是从下例岳飞之后开始读写

 1 f=open(‘小重山‘,‘w+‘,encoding=‘utf8‘)
 2 print(f.readline())
 3 f.write(‘岳飞‘)
 4 print(f.readline())
 5 f.close()
 6 输出:
 7 昨夜寒蛩不住鸣。
 8 惊回千里梦,已三更。
 9 起来独自绕阶行。
10 人悄悄,帘外月胧明。
11 白首为功名,旧山松竹老,阻归程。
12 欲将心事付瑶琴。
13 知音少,弦断有谁听。
14 ------------------------------------------
15 岳飞
1 f=open(‘小重山‘,‘r+‘,encoding=‘utf8‘)
2 print(f.tell())    #查看此时光标的位置
3 print(f.readline())
4 f.write(‘岳飞‘)
5 print(f.tell())  #查看write之后光标的位置
6 f.seek(0)        #将光标移动到0的位置,为了能够查看文件中的内容
7 print(f.readline())
8 f.close()

  a+:光标默认在最后的位置。即写在文件最后开始写,读在文件最后开始读。

先介绍三种最基本的模式:

1 # f = open(‘小重山2‘,‘w‘) #打开文件
2 # f = open(‘小重山2‘,‘a‘) #打开文件
3 # f.write(‘莫等闲1\n‘)
4 # f.write(‘白了少年头2\n‘)
5 # f.write(‘空悲切!3‘)6 # f.close()   #文件关闭之前统一将内容写入磁盘

文件操作方法

  1.readline():

     

    

  2.readlines():

    输出:

    [‘昨夜寒蛩不住鸣。\n‘, ‘惊回千里梦,已三更。\n‘, ‘起来独自绕阶行。\n‘, ‘人悄悄,帘外月胧明。\n‘, ‘白首为功名,旧山松竹老,阻归程。

  3.一行一行的读取文件的内容

 1 f = open(‘小重山‘,‘r‘,encoding=‘utf8‘)
 2 for i in f.readlines():
 3     print(i.strip())
 4
 5 输出:
 6 昨夜寒蛩不住鸣。
 7 惊回千里梦,已三更。
 8 起来独自绕阶行。
 9 人悄悄,帘外月胧明。
10 白首为功名,旧山松竹老,阻归程。
11 欲将心事付瑶琴。
12 知音少,弦断有谁听。

  4.在第6行添加iiiii:

1 f = open(‘小重山‘,‘r‘,encoding=‘utf8‘)2 data=f.readlines()3 f.close()4 number=05 for i in data:6   number+=17   if number == 68   i = ‘‘.join([i.strip(), ‘iiiii‘]) # 取代万恶的+9   print(i.strip())

  优化:

1 ##########对于大数据文件,要用以下方式(the best way):2 f = open(‘小重山‘,‘r‘,encoding=‘utf8‘)
3  number=0
4  for i in f:#这是for内部将f对象做成一个迭代器,用一行去一行。
5      number+=1
6      if number == 6:
7          i = ‘‘.join([i.strip(), ‘iiiii‘])
8      print(i.strip())

  

  5.tell :取出光标的位置

1 f=open(‘小重山‘,‘a‘,encoding=‘utf8‘)
2 print(f.tell())#  取出光标位置,英文一个字符,中文3个字符(前提是使用utf8编码)
3 print(f.read(2))  #read,无论是中文还是英文都是一个字符
4 print(f.tell())

  6.seek:移动光标到指定的位置;作用:比如断点续传

1 f=open(‘小重山2‘,‘r‘,encoding=‘utf8‘)
2 f.seek(0)
3 print(f.read(4))

  7.flush:write是在文件关闭之前统一将内存中的数据写入磁盘,对于安全性要求高的,flush就有用途了,即立刻将内存中的数据写入磁盘,无需等到文件关闭。

    进度条例子:

1  import sys,time
2  for i in range(30):
3      sys.stdout.write("*")   #sys.stdout  终端输出对象
4      sys.stdout.flush()
5      time.sleep(0.1)如果没有使用flush,将会在循环结束后统一将30个*一次从终端输出

    print的flush:

1  import sys,time
2  for i in range(30):
3      print(‘*‘,end=‘‘,flush=True)
4      time.sleep(0.1)

  8.truncate:截断(即删除)数据(注意不能再r模式下)

1 #在w模式下:先清空文件,再写,再截断
2 #在a模式下:直接将指定位置后的内容截断
3 f=open(‘小重山‘,‘w‘,encoding=‘utf8‘)
4 f.write(‘hello world‘)
5 f.truncate(5)
6 f.close()

如何在磁盘修改文件:

  常规思路:由于磁盘存储机制不能够实现

1  f=open(‘小重山‘,‘r+‘,encoding=‘utf8‘)
2  number=0
3  for line in f:
4      number+=1
5      if number==3:
6          f.write(‘alex‘)      

  r+:写都是在文件最后开始写

  只能采取重新创建一个文件的思路:

 1 f_read=open(‘小重山‘,‘r‘,encoding=‘utf8‘)
 2 f_write = open(‘小重山2‘,‘w‘,encoding=‘utf8‘)
 3
 4 number=0
 5 for line in f_read:
 6      number+=1
 7      if number==5:
 8          line=‘‘.join([line.strip(),‘alex\n‘])
 9      f_write.write(line)
10
11  f_read.close()
12  f_write.close()

   

文件操作之with操作:

  为了避免打开文件后忘记关闭,可以通过管理上下文,即:

1 with open(‘log‘,‘r‘) as f:
2         pass

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

1 with open(‘log1‘) as obj1, open(‘log2‘) as obj2:
2     pass

 

  

原文地址:https://www.cnblogs.com/lriwu/p/8330270.html

时间: 2024-10-14 02:07:53

python基础篇08-文件操作的相关文章

Python学习—基础篇之文件操作

文件操作 文件操作也是编程中需要熟练掌握的技能,尤其是在后台接口编写和数据分析过程中,对各种类型的文件进行操作,获取文件信息或者对信息进行存储是十分重要的.本篇博客中将主要对常见的文本格式文件和Excel文件的相关操作进行介绍. 一.文本文件 1.1 文件操作流程 1.打开文件,获得文件句柄,并赋值给一个变量 : 2.通过句柄对文件进行相关操作: 3.关闭文件 示例: 1 # -*- coding:utf-8 -*- 2 # author: cdc 3 # date: 2018/8/23 4 5

python学习笔记-(七)python基础--集合、文件操作&函数

本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: 1 2 3 4 >>> list_1 = [1,4,4,5,6,7,9,10] >>> list_1 =set(list_1) >>> print(list_1) {1, 4, 5, 6, 7, 9, 10} 2)关系测试:测试两组数据之间的关系,交集.并集.

python之路---08 文件操作

二十六.   文件 f = open(文件路径,mode = '模式',encoding = '编码格式') 1.基础 ① 读写时,主要看光标的位置 ②操作完成要写    f.close( ) f.flush( ) ③f  文件句柄是一个可迭代对象  可用for 循环 ④要用  \n  进行增减空白 2.文件路径 ① 相对路径:.相对于当前程序所在的文件夹,如果在文件夹内,直接写名字 不在时,需要出文件或进文件 文件名 /        进文件 ../            出文件 ②绝对路径:

【python基础】之文件操作

一.文件操作的基本流程 #打开文件,得到文件句柄并赋值给一个变量 f = open('小重山','r',encoding='utf-8') #通过句柄对文件进行操作 print(f.read()) #关闭文件 f.close() 二.文件打开模式 r,只读模式(默认).w,只写模式.[不可读:不存在则创建:存在则删除内容:]a,追加模式.[可读: 不存在则创建:存在则只追加内容] "+" 表示可以同时读写某个文件 r+,可读写文件 [可读:可写:可追加] :光标默认在0位置,最后位置开

python——基础篇-简易文件上传

post_server import socket import os sk=socket.socket() address=('127.0.0.1',8000) sk.bind(address) sk.listen(3) print('waiting...') BASE_DIR=os.path.dirname(os.path.abspath(__file__)) while 1: conn,addr=sk.accept() while 1: data=conn.recv(1024) cmd,f

Python基础篇(八)

key words:私有变量,类静态变量,生成器,导入Python模块,r查看模块可以使用的函数,查看帮助信息,启动外部程序,集合,堆,时间模块,random模块,shelve模块,文件读取等 >>> class Rectangle: ...     def __init__(self): ...         self.__width = 0 ...         self.__height = 0 ...     def setSize(self,width,height): .

iOS系列 基础篇 08 文本与键盘

iOS系列 基础篇 08 文本与键盘 目录: 1. 扯扯犊子 2. TextField 3. TextView 4. 键盘的打开和关闭 5. 打开/关闭键盘的通知 6. 键盘的种类 7. 最后再扯两句 1. 扯扯犊子 与Label一样,TextField和TextView也是文本类控件,是可以编辑文本内容的. 在控件内容编辑方面,三者都可以通过代码.双击该控件和属性检查器中的Text属性来实现,但是TextField和TextView比Label多了一个键盘的使用. 另外,TextField和T

工程脚本插件方案 - c集成Python基础篇

工程脚本插件方案 - c集成Python基础篇 序: 为什么要集成脚本,怎么在工程中集成Python脚本. 在做比较大型的工程时,一般都会分核心层和业务层.核心层要求实现高效和稳定的基础功能,并提供调用接口供业务层调用的一种标准的框架划分.在实际中根据需求会拆分的更细. 外部的表现形式就是一个核心动态库,带着一堆业务业务动态库.通过一个调度程序把这些链接起来,外加一堆配置文件,就形成一个完成的项目. 这种模式在一个团队开发中,工作职责比较容易划分.制定API接口后,开发工作基本可以并行实现,包括

python基础篇(五)

python基础篇(五) 算法初识 什么是算法 二分查找算法 ?一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大量计算机资源,而且耗时,这个时候就有人对这类计算编写了一些策略,这些策略就是算法.这些策略会加快数据计算时间,大大减少计算机的资源消耗. 在长时间人们编写代码的工作中,一些优秀的算法就被流传下来,但是不是所有的算法都能实现目的一步到位的工作,它只能减少你的代码,提高工作效率,随着知识的不断积累,你会