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复制目录结构脚本代码分享
Mar 06 Python
深入理解Django中内置的用户认证
Oct 06 Python
Python使用matplotlib填充图形指定区域代码示例
Jan 16 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
Python中的二维数组实例(list与numpy.array)
Apr 13 Python
python f-string式格式化听语音流程讲解
Jun 18 Python
python变量的存储原理详解
Jul 10 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
Mar 25 Python
Python控制台输出俄罗斯方块移动和旋转功能
Apr 18 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
CodeIgniter连贯操作的底层原理分析
2016/05/17 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
IE 下的只读 innerHTML
2009/08/21 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
javascript垃圾收集机制与内存泄漏详细解析
2013/11/11 Javascript
javascript特殊用法示例介绍
2013/11/29 Javascript
JS中怎样判断undefined(比较不错的方法)
2014/03/27 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
jQuery中 attr() 方法使用小结
2015/05/03 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
Python中的 enum 模块源码详析
2019/01/09 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
2021/01/29 Python
python中random模块详解
2021/03/01 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
员工评语大全
2014/01/19 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
勾股定理课后反思
2014/04/26 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
教师演讲稿开场白
2014/08/25 职场文书
英文道歉信
2015/01/20 职场文书
导师工作推荐信
2015/03/27 职场文书
2015年个人工作总结报告
2015/04/25 职场文书
python标准库ElementTree处理xml
2022/05/20 Python