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实现折半查找和归并排序算法
Apr 14 Python
基于Linux系统中python matplotlib画图的中文显示问题的解决方法
Jun 15 Python
pandas按若干个列的组合条件筛选数据的方法
Apr 11 Python
python 通过logging写入日志到文件和控制台的实例
Apr 28 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
Apr 28 Python
python飞机大战pygame游戏背景设计详解
Dec 17 Python
Python 实现数组相减示例
Dec 27 Python
Python计算公交发车时间的完整代码
Feb 12 Python
打印tensorflow恢复模型中所有变量与操作节点方式
May 26 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
10个顶级Python实用库推荐
Mar 04 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
使用PHP模拟HTTP认证
2006/10/09 PHP
php的memcached客户端memcached
2011/06/14 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
JS动态创建元素的两种方法
2016/04/20 Javascript
jQuery Pagination分页插件使用方法详解
2017/02/28 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
LayUi使用switch开关,动态的去控制它是否被启用的方法
2019/09/21 Javascript
layui的select联动实现代码
2019/09/28 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
2020/07/15 Javascript
Python3.2中Print函数用法实例详解
2015/05/19 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
Python面向对象之多态原理与用法案例分析
2019/12/30 Python
Python编写万花尺图案实例
2021/01/03 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
Servlet方面面试题
2016/09/28 面试题
《曹刿论战》教学反思
2014/03/02 职场文书
教育英语专业毕业生的求职信
2014/03/13 职场文书
法律七进实施方案
2014/03/15 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
Java字符缓冲流BufferedWriter
2022/04/09 Java/Android
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers