python--中的文件操作
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--中的文件操作的更多相关文章
- 关于Python中的文件操作(转)
总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...
- python学习之【第十一篇】:Python中的文件操作
1.前言 在Python中,对文件的操作主要遵循以下流程: 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 2.打开文件 使用open函数,可以打开一个已经存在的文件,或 ...
- 【Python】解析Python中的文件操作
目录结构: contents structure [-] 简介 Python中的文件类型 内置函数的文件操作 open()函数 Mode 创建文本文件 读取文本文件 循环文件对象 关闭文件 With语 ...
- 说说Python 中的文件操作 和 目录操作
我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfi ...
- 2018.8.6 Python中的文件操作
前言: 使用python来读写文件是非常简单的操作,我们使用open()函数来打开一个文件,获取到文件句柄.然后通过文件句柄就可以进行各种操作了,根据打开方式的不同能够执行的操作也会有相应的差异. 打 ...
- Python 中关于文件操作的注意事项
文件操作 #打开文件 f = open('要打开的文件路径',mode = 'r/w/a', encoding = '文件原来写入时的编码') #操作 data = f.read() #读取 f.wr ...
- [19/10/16-星期四] Python中的文件操作
一.打开文件 # open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, ...
- python中的文件操作
文件操作时,有'r','w','a'不同的操作类型,其中'r'只能读文件,seek(),tell()函数定位读的起始地方.'w'会清空文件内容然后写文件,seek(),tell()函数定位写的起始地方 ...
- python中的文件操作(2)
a+,w+,r+的特点: r+:r+模式允许读和写,当对文件句柄只进行写操作时,tell(),seek()为写操作的‘指针’(也就是写到seek()处). 当只进行读操作时,tell(),seek() ...
- python中的文件操作小结2
''' #-----------文件修改---------- f=open("test_1",'r',encoding="utf-8") f2=open(&qu ...
随机推荐
- nginx tcp负载均衡配置
1. nginx从1.9.0后引入模块ngx_stream_core_module,模块是没有编译的,需要用到编译需添加--with-stream配置参数 2. 在 nginx.conf 文件中, 与 ...
- Android gralloc 模块实例
本文实例为借鉴 http://www.ixueyi.com/jingyan/1865079.html 该文档后所写.主要是android的gralloc操作显存的模块实例,如有不正确的地方欢迎指出谢谢 ...
- Workgroup&Domain(Realm)
[工作组 Work Group] 在一个网络内,可能有成百上千台电脑,如果这些电脑不进行分组,都列在“网上邻居”内,可想而知会有多么乱.为了解决这一问题,Windows 9x/NT/2000就引用了“ ...
- Android SDK Manager检查更新时遇到Failed to fetch URL xxxxxxx reason: Connection to xxxxxx的错误的解决办法!
首先说明的是这个问题并不是每个人都存在,但是我和我的一个同学都有这种情况,所以我同学百度了一下,找出了解决办法. 问题描述: 使用Android SDK Manager检查在线更新,提示以下错误: & ...
- maven标签说明
<project xmlns="http://maven.apache.org/POM/4.0.0 " xmlns:xsi="http://www.w3.org/2 ...
- jetty tutorial
http://www.eclipse.org/jetty/documentation/current/embedding-jetty.html#d0e18726 Version: 9.2.2-SNAP ...
- AES加解密
AES加密类 <?php //php aes加密类 class AESMcrypt { public $iv = null; public $key = null; ; private $cip ...
- Java程序设计10——与运行环境交互
本部分介绍一些与运行环境相关的类 Sun为Java提供了丰富的基础类库,Java SE有三千多个基础类,要多敲代码,多练. 1.main()方法解析 如果一个程序总是按规定的流程运行,无需处理用户动作 ...
- ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法(转)
ScrollView嵌套ListView只显示一行之计算的高度不正确的解决办法 分类: android应用开发2013-12-19 09:40 1045人阅读 评论(3) 收藏 举报 AndroidS ...
- DB2存储过程通过游标实现批量数据处理
CREATE procedure proc_change()LANGUAGE SQLBEGIN DECLARE l_id INTEGER; DECLARE l_detail_id INTEGER; D ...