1.文件操作

  把文件打开

open 打开
f = open ('文件路径',mode='模式',encoding='编码格式')
#打开一个文件操作的时候取到的是一个句柄

  读取的方法

. read()      将文件中的内容全部读取出来. 弊端: 占内存.如果文件过大,容易导致内存崩溃
. read(n) 默认:读去文件内容全部read(n) 读取n个字符
. readline() 一次读取一行数据 , 注意每次读出来的数据都会有一个\n 需要使用strip()去空格
. readlines() 读取全部. 返回列表,也容易出现内存崩溃的问题,不建议使用 for line in f: 每次读取一行内容
   print(line.strip())

  1.  只读( r , rb)    读取文件的相关操作

     rb. 读取出来的数据是bytes类型, 在rb模式下, 不能选择encoding字符集

     rb的作用: 在读取非文本文件时,比如读取MP3.图像. 视频等信息的时候就需要用rb. 因为这种数据没办法直接显示出来

  2.  只写(w , wb)

     w 写入,只写,如果没有文件会创建文件,文件存在会清空文件,再写入新的内容

     wb 模式下,可以不指定打开文件的编码.但是在写文件的时候必须将字符串转化成utf-8的bytes数据

  3.  追加(a ,ab)

     追加模式下,写入的内容会追加在文件的末尾. 追加写读所有带b的操作就是对bytes进行操作, 主要用于非文本文件的时候比如音频 图片 视频rbwb就适用这个

   可用于断点续传.

     a模式也可以创建文件

  4.  读写 (r+ , r+b)

     读写模式必须是先读,因为默认光标是在开头的

     r+ 模式下必须先读取再写入

  5.  写读 (w+ , w+b)

     先将所有的内容清空,然后写入.最后读取.但是读取的内容是空的,不常用

  6.  写读(追加 写读)a+

     a+模式下,不论是先读还是后读,都是读取不到数据的,因为追加之后光标在末尾,如果需要读取数据要移动光标seek

二.文件操作中关于文件句柄的相关操作

1. seek() 移动光标

seek:两个参数
1. 表示偏移量
2. 从xxx开始偏移, 默认0, 开头 1, 当前位置 2, 末尾

    f.seek(0) 移动到开头

  f.seek(0, 2) 移动到末尾, seek的第二个参数表示的是从哪个位置进行偏移, 默认是0, 表示开头, 1表示当前位置 2表示结尾

2. tell()返回光标所在的位置

print(f.tell())

3. truncate() 截断文件

f = open("文件1", mode="w", encoding="utf-8")
f.write("哈哈") # 写入两个字符
f.seek(3) # 光标移动到3, 也就是两个字中间
f.truncate() # 删掉光标后面的所有内容
f.close() f = open("文件1", mode="r+", encoding="utf-8")
content = f.read(3) # 读取12个字符
f.seek(4)
print(f.tell())
f.truncate() # 后面的所有内容全部删掉
# print(content)
f.flush()
f.close()

三.文件修改

文件修改的步骤

  1.先从文件中读取数据

  2.把要修改的内容修改

  3.写入新文件

  4.删除旧文件

  5.给新文件改名

# 导入os模块  os表示操作系统
import os # f = open("夸一夸123", mode="r", encoding="utf-8")
# f2 = open("夸一夸123_副本", mode="w", encoding="utf-8") # with会自动的帮我们关闭文件的链接
with open("夸一夸123", mode="r", encoding="utf-8") as f, \
open("夸一夸123_副本", mode="w", encoding="utf-8") as f2: for line in f:
if "好人" in line:
line = line.replace("好人", "sb")
f2.write(line) # time.sleep(3) # 程序暂停3秒 这里让程序暂停就是为了直观的显示功能,计算机处理速度过快 看不出来 # 删除原来文件
os.remove("夸一夸123") # 重命名副本为原来的文件名
os.rename("夸一夸123副本", "夸一夸123")

一个重要的练习:

名字  数量 价格  数量
香蕉  1 85  50
苹果 2 60 30 编号,名称,价格
1,香蕉,1,85
2,苹果,2,6
要想获得这些数据 f = open("水果.txt", mode="r", encoding="utf-8") lst = []
for line in f: # 1,香蕉,1.85,50
dic = {} # 每行都是一个字典
line = line.strip() # 去掉空白 \n 1,香蕉,1.85,50
a, b, c, d = line.split(",") # [1, 香蕉, 1.85, 50]
dic['id'] = a
dic['name'] = b
dic['price'] = c
dic['totle'] = d
lst.append(dic) print(lst) # f = open("水果.txt", mode="r", encoding="utf-8")
# line = f.readline().strip() # 第一行内容, 编号,名称,价格,数量,哈哈
# h,i,j,k = line.split(",")
# lst = []
# for line in f: # 1,香蕉,1.85,50
# dic = {} # 每行都是一个字典
# line = line.strip() # 去掉空白 \n 1,香蕉,1.85,50
# a, b, c, d = line.split(",") # [1, 香蕉, 1.85, 50]
# dic[h] = a
# dic[i] = b
# dic[j] = c
# dic[k] = d
# lst.append(dic)
#
# print(lst) f = open("水果.txt", mode="r", encoding="utf-8")
line = f.readline().strip() # 第一行内容, 编号,名称,价格,数量,哈哈
title = line.split(",") # [编号,名称,价格,数量,哈哈]
lst = []
i = 0 for line in f: # 1,香蕉,1.85,50
dic = {} # 每行都是一个字典
line = line.strip() # 去掉空白 \n 1,香蕉,1.85,50
data = line.split(",") # [1, 香蕉, 1.85, 50] for i in range(len(title)):
dic[title[i]] = data[i] lst.append(dic) print(lst)

python--中的文件操作的更多相关文章

  1. 关于Python中的文件操作(转)

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  2. python学习之【第十一篇】:Python中的文件操作

    1.前言 在Python中,对文件的操作主要遵循以下流程: 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 2.打开文件 使用open函数,可以打开一个已经存在的文件,或 ...

  3. 【Python】解析Python中的文件操作

    目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语 ...

  4. 说说Python 中的文件操作 和 目录操作

    我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...

  5. 2018.8.6 Python中的文件操作

    前言: 使用python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄.然后通过文件句柄就可以进行各种操作了,根据打开方式的不同能够执行的操作也会有相应的差异. 打 ...

  6. Python 中关于文件操作的注意事项

    文件操作 #打开文件 f = open('要打开的文件路径',mode = 'r/w/a', encoding = '文件原来写入时的编码') #操作 data = f.read() #读取 f.wr ...

  7. [19/10/16-星期四] Python中的文件操作

    一.打开文件 # open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, ...

  8. python中的文件操作

    文件操作时,有'r','w','a'不同的操作类型,其中'r'只能读文件,seek(),tell()函数定位读的起始地方.'w'会清空文件内容然后写文件,seek(),tell()函数定位写的起始地方 ...

  9. python中的文件操作(2)

    a+,w+,r+的特点: r+:r+模式允许读和写,当对文件句柄只进行写操作时,tell(),seek()为写操作的‘指针’(也就是写到seek()处). 当只进行读操作时,tell(),seek() ...

  10. python中的文件操作小结2

    ''' #-----------文件修改---------- f=open("test_1",'r',encoding="utf-8") f2=open(&qu ...

随机推荐

  1. html 1.0 鼠标放上去会亮 onmouseover onmouseout 以及this标签的使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. C#流对象使用完后不立即释放的问题

    public class testwriter : MonoBehaviour { // Use this for initialization void Start () { } [MenuItem ...

  3. 5月23日Google就宣布了Chrome 36 beta

    对于开发人员来说,本次更新的重点还有element.animate().HTML Imports.Object.observe()的引入,以及一个改进后的throttled async touchmo ...

  4. 滑动窗口的最大值 · sliding-window-maximum

    [抄题]: Given an array nums, there is a sliding window of size k which is moving from the very left of ...

  5. 不要怂,就是GAN (生成式对抗网络) (二):数据读取和操作

    前面我们了解了 GAN 的原理,下面我们就来用 TensorFlow 搭建 GAN(严格说来是 DCGAN,如无特别说明,本系列文章所说的 GAN 均指 DCGAN),如前面所说,GAN 分为有约束条 ...

  6. SQL group by 分组后,同一组的排序后取第一条

    SELECT * FROM(                SELECT                     [SPID]                    ,[PH1]           ...

  7. PHP 微信公众号开发 - 消息推送

    项目微信公众号开发,需要做用户消息推送,记录下来以便日后使用 1,接上一篇文章,可以查看如何获取用户openid PHP 微信公众号开发 - 获取用户信息 2,添加模板消息 3,查看模板详情 根据模板 ...

  8. php利用mpdf生成pdf并保存到目录

    下载mpdf7.0两种方法 (1). github地址:https://github.com/mpdf/mpdf (2). composer require mpdf/mpdf <?php er ...

  9. tpshop使用中遇到的问题

    1.短信配置里:商家发货时是否给客户发短信  配置了 开启   如果购买者个人资料里的电话没填写,商家点击发货时, 程序会挂掉 解决方法:修改application\common\logic\SmsL ...

  10. 一款好用的js插件及工具包

    笔记:需要源码私信 script文件夹 script下的目录文件: 使用的效果,解决ie兼容性问题,好处多多!慢慢参考! 具体用法: 前端引入js,写必须要的js脚本! <script src= ...