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实现bitmap数据结构详解
Feb 17 Python
Python编写检测数据库SA用户的方法
Jul 11 Python
python的即时标记项目练习笔记
Sep 18 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
Python快速排序算法实例分析
Nov 29 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
Python编程flask使用页面模版的方法
Dec 28 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 Python
Python字典实现伪切片功能
Oct 28 Python
如何用python 操作zookeeper
Dec 28 Python
FP-growth算法发现频繁项集——发现频繁项集
Jun 24 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
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
php curl 伪造IP来源的实例代码
2012/11/01 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
2013/07/03 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
2017/09/29 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
python del()函数用法
2013/03/24 Python
Python实现GUI学生信息管理系统
2020/04/05 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
Python实现序列化及csv文件读取
2020/01/19 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
HTML5未来发展趋势
2016/02/01 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
旅游管理毕业生自荐信
2013/11/05 职场文书
大学学风建设方案
2014/05/04 职场文书
小学学校评估方案
2014/06/08 职场文书
管理岗位竞聘演讲稿
2014/08/18 职场文书
房屋出售授权委托书
2014/10/12 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby