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 ...
随机推荐
- UITableViewController的使用
如果整个程序界面都只是使用UITableView来搭建,一般需要如下步骤: (1)向界面上拖一个UITableView (2)设置数据源 (3)设置代理 (4)遵守代理协议 上述过程相对繁琐,为了简 ...
- elasticsearch client
你可以用client做很多事情: 在集群中执行index, get, delete, search,update 操作 在集群中执行administrative tasks 如果你想再程序中嵌入ela ...
- [NOIP2011]刷水
前几天做了NOIP2011的题,感觉不是那么难. 这边先做了两天的前两题,T3还没打. D1T1:顺次读入,分别判断是否覆盖即可,照例大水: #include<cstdio> ],b[], ...
- mysql中的单引号/小数点/字符转换为数字/警告信息
我们准备玩点有趣的: select 一个数字: mysql from mysql.user; +---+ | +---+ | | | +---+ rows in set (0.00 sec) mysq ...
- perl6中函数参数(1)
sub F($number is copy){ $number++; say $number; } F(); #下面是错误的 sub F($number){ $number++; say $numbe ...
- 【Python学习笔记】Coursera课程《Python Data Structures》 密歇根大学 Charles Severance——Week6 Tuple课堂笔记
Coursera课程<Python Data Structures> 密歇根大学 Charles Severance Week6 Tuple 10 Tuples 10.1 Tuples A ...
- io多路复用-select()
参照<Unix网络编程>相关章节内容,实现了一个简单的单线程IO多路复用服务器与客户端. 普通迭代服务器,由于执行recvfrom则会发生阻塞,直到客户端发送数据并正确接收后才能够返回,一 ...
- Laravel 5.2 整合 Uploadify 上传图片
前端: <!-- 引入CSS.JS --> <link rel="stylesheet" type="text/css" href=" ...
- python基础===理解Class的一道题
解题如下: from random import randint class Die(): def __init__(self,sides=6): self.sides = sides def rol ...
- 2017多校第8场 HDU 6133 Army Formations 线段树合并
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6133 题意:给你一棵n个节点的二叉树,每个节点有一个提交任务的时间,每个节点总的提交任务的罚时为:提交 ...