Python文件操作函数用法实例详解


Posted in Python onDecember 24, 2019

这篇文章主要介绍了Python文件操作函数用法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

字符编码

二进制和字符之间的转换过程 --> 字符编码

ascii,gbk,shit,fuck 每个国家都有自己的编码方式

美国电脑内存中的编码方式为ascii ; 中国电脑内存中的编码方式为gbk , 美国电脑无法识别中国电脑写的程序 , 中国电脑无法识别美国电脑写的程序

现在硬盘中躺着 ascii/gbk/shit/fuck 编码的文件, 他们的编码格式已经无法修改了, 所以内存中出现unicode编码, 内存中的unicode编码方式可以识别 ascii/gbk/shit/fuck 编码的文件

用unicode编码方式运行了 ascii/gbk/shit/fuck 编码的文件, 最后还是要装入硬盘, 装入硬盘早期用unicode存进去,但是 他在识别ascii的时候, 会把8位数字转换成16位数字存入硬盘, 浪费空间, 所以出现了utf8(与unicode对应,并且压缩unicode编码的字符)

utf8 能识别其他国家的编码,只识别unicode, utf8目前还不能放在内存,. 但是现在写的代码都是utf8, 历史遗留ascii/gbk/shit/fuck 编码的文件迟早消失/淘汰,要么被转换成utf8格式.所以迟早有一天内存中也是utf8.

python2 和 python3字符编码的区别

  • 打开python解释器
  • python解释器相当于文本编辑器,读取二进制转化为普通字符 a = 1
  • 对转化后的普通字符进行解释(定义变量就要新开辟内存空间存放变量)

python2

用文件指定的编码方式存储定以后的变量

python3

用unicode编码方式存储定以后的变量

以后写文件以什么格式存储,就以什么格式读取

文件的 三种打开方式

  • r: 只读 read
  • w:只写 write 清空后写入(文件不存在自动创建)
  • a:追加(文件不存在自动创建)

文本模式:t

二进制模式:b

t/b无法单独使用,只能和r/w/a一起使用

with管理文件上下文

with open() as f: # 自动关闭

一、文件的两种方式

文件的数据是存放于硬盘上的,因而只存在覆盖,不存在修改这么一说,我们平时看到饿的修改文件,都是模拟出来的效果,具体的说有两种实现方式。

1.1 方式一

将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)。

import os

with open('37r.txt') as fr, \
    open('37r_swap.txt', 'w') as fw:
  data = fr.read() # 全部读入内存,如果文件很大,会很卡
  data = data.replace('tank', 'tankSB') # 在内存中完成修改

  fw.write(data) # 新文件一次性写入原文件内容

# 删除原文件
os.remove('37r.txt')
# 重命名新文件名为原文件名
os.rename('37r_swap.txt', '37r.txt')
print('done...')

1.2 方式二

将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件。

import os
with open('37r.txt') as fr,\
    open('37r_swap.txt', 'w') as fw:
  # 循环读取文件内容,逐行修改
  for line in fr:
    line = line.replace('jason', 'jasonSB')
    # 新文件写入原文件修改后内容
    fw.write(line)
os.remove('37r.txt')
os.rename('37r_swap.txt', '37r.txt')
print('done...')

总而言之,修改文件内容的思路为:以读的方式打开原文件,以写的方式打开一个新的文件,把原文件的内容进行修改,然后写入新文件,之后利用os模块的方法,把原文件删除,重命名新文件为原文件名,达到以假乱真的目的。

二、定义函数的三种方式

2.1 无参函数

定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名

在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。

如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成无参函数。

def func():
  print('hello nick')
func() # hello nick

2.2 有参函数

在函数定义阶段括号内有参数,称为有参函数。需要注意的是:定义时有参,意味着调用时也必须传入参数。

如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数。

def sum_self(x, y):
  """求和"""
  res = x+y
  print(res)
sum_self(1,2) # 3

2.3 空函数

当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能。

def func():
  pass

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之数据处理编程实例(二)
May 22 Python
python获得文件创建时间和修改时间的方法
Jun 30 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
python绘制双柱形图代码实例
Dec 14 Python
python如何在循环引用中管理内存
Mar 20 Python
django 微信网页授权登陆的实现
Jul 30 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
Keras中的两种模型:Sequential和Model用法
Jun 27 Python
深入了解NumPy 高级索引
Jul 24 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
Python 用户输入和while循环的操作
May 23 Python
Python的形参和实参使用方式
Dec 24 #Python
python接口自动化如何封装获取常量的类
Dec 24 #Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 #Python
Python 限定函数参数的类型及默认值方式
Dec 24 #Python
python+opencv实现车牌定位功能(实例代码)
Dec 24 #Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 #Python
Python 元组拆包示例(Tuple Unpacking)
Dec 24 #Python
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP获取本周第一天和最后一天示例代码
2014/02/24 PHP
php可生成缩略图的文件上传类实例
2014/12/17 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
实现placeholder效果的方案汇总
2015/06/11 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
vue基于element的区间选择组件
2018/09/07 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
Node.js实现简单管理系统
2019/09/23 Javascript
JavaScript实现滑动门效果
2020/01/18 Javascript
python实现在字符串中查找子字符串的方法
2015/07/11 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
python实现全盘扫描搜索功能的方法
2019/02/14 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
css3高级选择器使用方法
2013/12/02 HTML / CSS
H5调用相机拍照并压缩图片的实例代码
2017/07/20 HTML / CSS
zooplus波兰:在线宠物店
2019/07/21 全球购物
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
临床医学专业毕业生的自我评价
2013/10/17 职场文书
文员的职业生涯规划发展方向
2014/02/08 职场文书
护士自荐信范文
2015/03/25 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android