Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)
字符编码
为什么要有字符编码?
字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1".
一个文件用什么编码方式存储,就用什么编码打开
计算机在存取数据的时候,以什么格式存的就需要以什么格式来解码.例如:数据在内存中使用unicode编码来保存,当数据要刷入硬盘时,就需要把数据用utf-8的标准转换成Bytes(二进制),保存在硬盘上,读取的时候就需要用utf-8的标准转换成unicode,如果保存和读取使用的编码不同会导致乱码.
python3默认以utf-8的方式存:
内存中的编码,在未执行行前所有的都是unicode类型,但是在执行时候,会根据python设置的编码类型进行编码,默认utf-8,编码会另外开辟内存空间
python2:默认以ASCII编码读取,一般读取时候需要手动指定,否则代码无法正常运行。Python2中的 str默认存的是Bytes。而不是像Python3一样默认存的是unicode.
Python使用 encode和decode 两个参数命令来编码和解码.
encode是unicode编码的过程,可以转成任何编码,如utf-8,gbk等
decode是解码的过程,用什么方式编码就用什么方式解码
python文件执行的时候在哪个终端执行就用哪个终端的字符编码进行输出打印
乱码:存的时候乱码,无解
读乱码:选择正确的编码方式打开即可
python文件头:unicode按照头部声明的编码类型进行encode
#! /usr/bin/env python #linux指定python解释器,windows上无效
# -*- coding: utf-8 -*- #指定字符编码
文件处理
打开一个文件:文件名,权限,字符编码
权限分为三种:
r只读:读文件权限,没有这个文件将报错
w可写:如果文件存在,将清除该文件的所有内容再写,如果不存在将创建文件
a追加写:不清除文件内容的写权限,如果文件不存在,那么创建,存在则追加,打开后光标就在最后面
另外,rb、wb、ab是以Bytes读取文件,二进制模式不需要指定encoding字符编码
f=open('aa.txt','r',encoding='utf-8')
读文件
f.read() #一次读完,如果括号内加一个数字,就是读多少个字符,这种方式读取后,文件内的光标会到最后,再次read的时候将读不到任何内容
f.readline() #一次读取一行,每执行依次,光标将到达下一行开头
f.readlines() #列表方式读,一行为列表的其中一个元素,一次将文件读完
写文件
f.write('11111111\n222\n555\n') #写内容,需要有写权限打开文件,写的是字符串,没有换行操作,需要自己写\n
f.writelines(['111\n','444\n']) #列表方式写
关闭文件:文件操作完成需要关闭打开的文件
f.close()
其他操作:
f.flush() #写完立即向磁盘刷新
f.closed #判断文件是否关闭
print(f.name,f.encoding)
print(f.readable()) #是否以只读
print(f.writable()) #是否可写
#seek结合二进制方式读
f.seek(2) #光标移动两个字节,默认以文件开始为参照
f.seek(2,1) #第二个数:0是文件开始,1表示当前位置,2为倒着
f.tell() #输出光标所在位置
f.truncate(3) #截断,写操作,将光标后的内容删除,以字节为单位
替换文件中的内容:前提是有aa.txt文件
import os
f=open('aa.txt','r',encoding='utf-8')
w=open('aa.txt.swp','a',encoding='utf-8')
for line in f.readlines():
if 'wangyong' in line:
line=line.replace('wangyong','jiazihe')
w.write(line)
else:
print('aaa')
f.close()
w.close()
os.remove('aa.txt')
os.rename('aa.txt.swp','aa.txt')
上下文方式进行文件打开操作:这种方式不用close文件
with open('aa.txt','r',encoding='utf-8') as f_file,\
open('aa.txt.swp','w',encoding='utf-8') as w_file:
函数基础
函数是一种基本的代码抽象的方式。
函数是一种过程,也称为子程序,它执行一个指定的运算或操作.
函数的使用有两个过程,定义和调用。和现实生活中各类工具的使用一样,如剪刀、镊子等,要使用剪刀镊子,必须先创造剪刀和镊子。而函数即可了解成编程中的工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用
函数使用必须是:先定义,后调用
函数和变量的定义方式相似
定义阶段:同样跟变量一样,在内存中开辟空间存储,只检查语法上的错误
调用阶段:调用阶段才会报函数逻辑上的错误
如:
def tets(): #这个函数定义的时候并不会报错,语法没有问题,逻辑有问题,并且在调用函数时报错
alkajhsdlaksld #识别为变量名,定义的时候没问题,但是调用的时候找不到变量名报错 def test1(): #这个函数定义的时候会报错 ,因为是语法错误
if 1 > 2
print('')
函数的分类
内置函数:built-in
如:max、print、len等打开python解释器就能够使用的函数
自定义函数:
def 函数名(参数1,参数2,...):
'''注释'''
函数体
定义函数的函数名可以理解成变量名,调用函数时候需要用函数名进行调用,函数名的定义一般不要和内置函数或关键字冲突
参数是函数调用过程红需要传入的值
注释是说明该函数的作用,可以没有
函数体是该函数调用时候所执行的代码块
示例:打印字符的函数,函数调用的时候需要传入字符和数字,如下打印a 100次
def print_tag(tag,con):
print(tag*con,end=' ')
print_tag('a',100)
函数分类:
定义无参函数: 不依赖外部参数运行
def print_num()
print('')
定义有参函数: 依赖外部参数运行
def print_tag(tag,con):
print(tag*con,end=' ')
print_tag('a',100)
定义空函数: 函数体为pass,主要用于一个程序框架的构建过程
def func_name():
'''说明'''
pass
调用函数
语句形式:
print_num()
表达式形式:
res=print_num()
作为参数形式:
print(print_num())
Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)的更多相关文章
- python第二周数据类型 字符编码 文件处理
第一数据类型需要学习的几个点: 用途 定义方式 常用操作和内置的方法 该类型总结: 可以存一个值或者多个值 只能存储一个值 可以存储多个值,值都可以是什么类型 有序或者无序 可变或者不可变 二:数字整 ...
- python开发基础之字符编码、文件处理和函数基础
字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件用什么编码方式存储 ...
- 第二篇.2、python基础之字符编码
一 了解字符编码的知识储备 一 计算机基础知识 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的 ...
- python之旅:字符编码
一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...
- Android开发 ---从互联网上下载文件,回调函数,图片压缩、倒转
Android开发 ---从互联网上下载文件,回调函数,图片压缩.倒转 效果图: 描述: 当点击“下载网络图像”按钮时,系统会将图二中的照片在互联网上找到,并显示在图像框中 注意:这个例子并没有将图 ...
- Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作
本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...
- python 基础之字符编码和文件处理
一.字符编码 (1)计算机基础知识 (2)python 解释器执行py文件的原理 <1>python 解释器启动 <2>python解释器相当于一个文本编辑器,打开txt.py ...
- Python 入门基础6 --字符编码、文件操作1
今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...
- Python基础之字符编码,文件操作流与函数
一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...
随机推荐
- HDFS fs 基本命令
https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/FileSystemShell.html#Overvie ...
- MSSQL 数据库性能优化
优化数据库的注意事项: 1.关键字段建立索引. 2.使用存储过程,它使SQL变得更加灵活和高效. 3.备份数据库和清除垃圾数据. 4.SQL语句语法的优化. 5.清理删除日志. SQL语句优化的基本原 ...
- js_跑马灯
跑马灯?刚听到这个词的时候,脑袋第一个想到的是跑马?嗯?就是香港的那种跑马场.懂?其次就是霓虹灯了,一闪一闪的多好看. 霓虹灯?哦,那是城市的杰作,记忆中是.开往城市边缘开,把车窗都摇下来,用速度换一 ...
- 集合框架源码学习之LinkedList
0-1. 简介 0-2. 内部结构分析 0-3. LinkedList源码分析 0-3-1. 构造方法 0-3-2. 添加add方法 0-3-3. 根据位置取数据的方法 0-3-4. 根据对象得到索引 ...
- Tomcat8配置默认项目
<!-- 配置默认访问项目 --> <Host name="localhost" appBase="webapps" unpackWARs=& ...
- Linux 入门记录:十八、Linux 系统启动流程 + 单用户修改 root 密码 + GRUB 加密
一.系统启动流程 一般来说,Linux 系统的启动流程是这样的: 1. 开机之后,位于计算机主板 ROM 芯片上的 BIOS 被最先读取,在进行硬件和内存的校验以及 CPU 的自检没有异常后, BIO ...
- iptables 操作
iptables --list 查看列表 iptables删除规则 iptables -nL --line-number Chain INPUT (policy ACCEPT)num target p ...
- python的IDLE界面回退代码语句
Alt+P回退到IDLE中之前输入的代码语句 Alt+N可以移至下一个代码语句
- 【LabVIEW技巧】LabVIEW OOP怎么学
前言 有很多人对LabVIEW OOP存在比较极端的看法,大致分为两类: 1. 绝对否定派认为LabVIEW OOP只不过是LabVIEW为了追求时髦,在面向过程的基础上用簇做了一些特性,实际上完全不 ...
- [How to] 使用Xib来创建view
1.简介 代码库 正如之前博客介绍的,xib可定义页面的某个部分,特别当此部分区域的view集中并且还有一些相互关联性(如隐藏等)是i特别适合使用xib来进行封装. 本文为[How to]使用自定义c ...