一、文本文件基本操作

1.1 打开文本文件,得到文件句柄并赋值给一个变量

f = open('test', 'r', encoding='utf-8')  # 默认打开模式为r

文件路径:相对路径、绝对路径
 1)当文件和要执行的.py文件在相同目录下,直接使用文件的名称即可
 2)当文件与要执行的.py文件不在相同目录下,使用绝对路径
      文件的路径,需要用取消转义的方式表示: 1.使用 \\ ;2.使用 r'c:/test/test.txt'

第一种打开文件方式: 使用 \\

file1 = open('G:\\myPyTest\\2.txt', 'w', encoding='utf-8')

file1.write('哈哈')

file1.close()

第二种打开文件方式: 使用r  参数说明:文件路径、操作模式、编码

file2 = open(r'G:\myPyTest\1.txt', 'w', encoding='utf-8')

file2.write('嘿嘿')

file2.close()

open打开文件是依赖了操作系统的提供的途径
操作系统有自己的编码,open在打开文件的时候默认使用操作系统的编码
win7\8--->utf-8   mac/linux---->gbk

第三种打开文件方式:with

with open('geci','a+') as f:  #打开一个文件,把这个文件的句柄付给f

    for line in f:

        pass

打开文件的模式有:

rb,【以二进制格式打开一个文件只用于只读,文件指针将放在文件开头,为默认模式】
r,只读模式【不可写,文件不存在的话会报错,文件的指针会放在文件开头,r为默认模式】
w,只写模式【不可读,文件不存在则创建,存在则清空文件内容】
a,追加模式【不可读,文件不存在则创建,存在不会清空文件内容,只在文件末尾追加内容,此时指针在文件末尾】

"+" 表示可以同时读写某个文件

r+,【可读、可写、可追加,如果打开的文件不存在,会报错,文件指针放在文件开头】
rb+,【以二进制格式打开一个文件用于读写,文件指针放在文件开头】
w+,【写读模式,使用w+的话,已经存在的文件内容会被清空,可以读到已经写入的文件内容,文件不存在则创建】
a+,【追加读写模式,文件不存在则创建,存在则只追加写入内容,指针在文件末尾】

1.2 读取文件内容

f = open('names','a+',encoding='utf-8') #打开文件

print(f.read()) #读取文件所有内容

print(f.readline()) #读取一行内容

print(f.readlines())  #是把文件的每一行放到一个list里面,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆

二、文件操作方法

f.seek(0)    #把当前文件指针指向哪,0表示将光标定位到文件开头
f.seek(10) #把光标定位到第10个字符之后 f.tell() #获取当前文件指针的位置
print(f.tell()) #输出10 f.write('爱情证书') #写入内容 写的时候传入一个str类型 f.writelines() #str list dic 元组类型(写的时候传入一个可迭代的对象) f.flush() #强制把缓冲区的数据写入磁盘 f.truncate() #清空文件内容 f.close() #关闭文件

2.1 大文件的操作方法

用上面的read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,
读过的内容就从内存中释放了

f = open('file.txt')

for line in f:

    print(line)
#这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存

三、修改文件

3.1 简单粗暴直接,先清空再写入
  1) 打开一个文件,获取到所有内容
  2) 对内容进行修改
  3) 清空原来的内容
    4) 把新的内容写进去
3.2 实例
3.2.1 需求一:将文件中所有123456 修改成7890

f = open('username','a+')

f.seek(0)

all_str = f.read()  #获取所有内容,为字符串类型

new_str = all_str.replace('','')  #修改文件,将所有密码123456替换成7890

f.seek(0)

f.truncate()  #清空文件内容

f.write(new_str)

f.close()

3.2.2 需求二:将文件中素有用户名前加上sys_

f = open('username','a+')

f.seek(0)

all_str = ''

for s in f:#循环文件,遍历出每一行数据

    new_s = 'syz_' + s

    all_str= all_str +new_s

f.seek(0)

f.truncate()#清空文件内容

f.write(all_str)

f.close()

3.3 修改文件高效方式
 1) 打开两个文件,a.txt  a.txt.bak
   2) a文件第一行,写一行到b文件中
 3) 删除a文件,将b文件名称改为a文件

import os

with open('words',encoding='utf-8') as fr,open('.words.bak','w',encoding='utf-8') as fw:

     for line in fr:

         new_line = line.replace('学','learn')  #将文件每一行里的“学”字替换成“learn”

         fw.write(new_line)

         fw.flush() #强制将缓存区的数据写到磁盘上

os.remove('words')  #删除文件

os.rename('.words.bak','words')  #改名

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

  1. 使用python操作json文本文件

    使用python读写文本文件内容时,我们知道如果文本文件里的内容无规律,那么修改起来比较麻烦.但是如果文本文件存储是有规律的,比如JSON格式,在利用python内置的函数把JSON格式的数据转成py ...

  2. Python中文本文件读写操作的编码问题

    Python中文本文件读写的编码问题 编码(encode): 我们输入的任何字符想要以文件(如.txt)的形式保存在计算机的硬盘上, 必须先经按照一定的规则编成计算机认识的二进制后,才能存在电脑硬盘上 ...

  3. Python操作数据库之 MySQL

    Python操作数据库之MySQL 一.安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作. 如果要源码安装 ...

  4. python + docker, 实现天气数据 从FTP获取以及持久化(二)-- python操作MySQL数据库

    前言 在这一节中,我们主要介绍如何使用python操作MySQL数据库. 准备 MySQL数据库使用的是上一节中的docker容器 “test-mysql”. Python 操作 MySQL 我们使用 ...

  5. python - 操作excel表格

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. ...

  6. 数据备份 及 Python 操作 Mysql

    一 MySQL数据备份 #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境.但不能恢复到异构系统中如Windows. #2. 逻辑备份: 备份的是建表.建库.插入等操作所执行SQL语句,适用 ...

  7. 用Python操作excel文档

    使用Python第三方库 这一节我们学习如何使用Python去操作Excel文档.如果大家有人不知道Excel的话,那么建议先学一学office办公基础.这里想要操作Excel,必须安装一个Pytho ...

  8. Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy

    本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...

  9. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  10. 练习:python 操作Mysql 实现登录验证 用户权限管理

    python 操作Mysql 实现登录验证 用户权限管理

随机推荐

  1. java之xml解析-dom4j

    解析方式 XML 解析方式有很多种,但是常用的有两种,如下: DOM Document Object Model:把整个 XML 读到内存中,形成树状结构.整个文档为 Document 对象,属性为 ...

  2. 关闭图形界面下普通用户关机重启命令- 7.x - CentOS

    vim /etc/polkit-/rules.d/-inhibit-shutdown.rules polkit.addRule(function(action, subject) { if (acti ...

  3. input[type = 'date']标签。

    1.首先调用浏览器自带时间控件,input的type属性有以下几种写法: type=’date’ //显示年.月.日 type=‘month’//显示年.月 type=‘week’//显示年.周 ty ...

  4. spring boot + vue + element-ui全栈开发入门——主页面开发

    目的 开发一个后台管理的前端,顶部是标题,左侧是菜单导航栏,中间是要显示的内容.而内容可以是各种图表,也可以是数据列表. 一.准备工作 1..修改App.vue文件 代码如下: <templat ...

  5. inux下输入ifconfig命令,没有eth0,怎么解决

    用ifconfig命令,只有lo,没有eth0的解决方案 问题描述:视频中输入ifconfig命令,显示eth0和lo,但是自己在虚拟机中并非得到这样的结果,而是只有lo,即网卡未启动,也没有ip,无 ...

  6. np.meshgrid()用法+ np.stack()用法

    A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢?答案如下 这就是坐标矩阵——横坐标矩阵X XX中的每个元素,与纵坐标矩阵Y YY中对应位置元素,共同构 ...

  7. MYSQL 修改表结构基本操作一览

    查看表的字段信息:desc 表名; 查看表的所有信息:show create table 表名; 添加主键约束:alter table 表名 add constraint 主键 (形如:PK_表名) ...

  8. [Python]基础教程(1)、介绍及环境搭建

    一.Python简介 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言,是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 是一种解释型语言: 这意味着开 ...

  9. 通过 UC2000-VG-32G设备呼叫不进号问题排查

    1.登陆设备管理页面: 呼叫发起时,呼叫状态显示振铃,但是不进号. 2.查看设备cdr. 3.得出结论:NO CARRIER 由于号码频繁呼叫次数太多运营商对其死锁.

  10. MySQL 实战笔记

    01 | 基础架构:一条SQL查询语句是如何执行的? 大体可以分为: Server 层:包含了连接器.查询缓存.分析器.优化器.执行器,跨存储引擎的功能都在这一层实现的,比如存储过程.触发器.视图等. ...