字符编码

为什么要有字符编码?

字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"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('123')

函数的分类

内置函数: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('111111')

定义有参函数: 依赖外部参数运行

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开发基础之字符编码、文件处理和函数基础的更多相关文章

  1. python第二周数据类型 字符编码 文件处理

    第一数据类型需要学习的几个点: 用途 定义方式 常用操作和内置的方法 该类型总结: 可以存一个值或者多个值 只能存储一个值 可以存储多个值,值都可以是什么类型 有序或者无序 可变或者不可变 二:数字整 ...

  2. Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)

    字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件用什么编码方式存储 ...

  3. 第二篇.2、python基础之字符编码

    一 了解字符编码的知识储备 一 计算机基础知识 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的 ...

  4. python之旅:字符编码

    一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...

  5. Android开发 ---从互联网上下载文件,回调函数,图片压缩、倒转

     Android开发 ---从互联网上下载文件,回调函数,图片压缩.倒转 效果图: 描述: 当点击“下载网络图像”按钮时,系统会将图二中的照片在互联网上找到,并显示在图像框中 注意:这个例子并没有将图 ...

  6. Python全栈开发之路 【第三篇】:Python基础之字符编码和文件操作

    本节内容 一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件语句: if 条件成立: val = 1 else: val = 2 改成三元运算: val = 1 if 条件成 ...

  7. python 基础之字符编码和文件处理

    一.字符编码 (1)计算机基础知识 (2)python 解释器执行py文件的原理 <1>python 解释器启动 <2>python解释器相当于一个文本编辑器,打开txt.py ...

  8. Python 入门基础6 --字符编码、文件操作1

    今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...

  9. Python基础之字符编码,文件操作流与函数

    一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...

随机推荐

  1. RN的打包

    1.首先执行以下命令 在android目录下 keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -key ...

  2. LINQ&EF任我行(二)--LinQ to Object

    (原创:灰灰虫的家http://hi.baidu.com/grayworm)LinQ to Objects是LinQ家庭的核心,其它的LinQ也使用了与LinQ to Objects相同的查询句法.最 ...

  3. myVision云服务商业数据分析解决方案

    类型: 定制服务 软件包: business intelligence internet retailing solution collateral 联系服务商 产品详情 解决方案 概要 2014年, ...

  4. intel Skylake平台安装WIN7

    目前针对IntelSkylake平台安装WIN7时USB接口失灵的问题,不少硬件厂商都推出了免费修改工具来集成XHCI USB控制器驱动,这其中技嘉提供了一款Windows USB Installat ...

  5. vim复制粘贴到系统剪贴板

    一般来讲,如果你没有在.vimrc中配置过相关的信息的话,可以考虑下面的方法.系统环境 Ubuntu 14.04 LTS. 安装与使用 首先需要安装一个vim-gtk 命令$sudo apt-get ...

  6. Educational Codeforces Round 14 - F (codeforces 691F)

    题目链接:http://codeforces.com/problemset/problem/691/F 题目大意:给定n个数,再给m个询问,每个询问给一个p,求n个数中有多少对数的乘积≥p 数据范围: ...

  7. Altium_Designer-怎么将“原理图的更改”更新到“pcb图”?

    打开原理图,直击菜单栏>>Design,选择第一项,>>Update PCB Document...在弹出的对话框里面选择执行更改即可将原理图更新到工程下面对应的PCB.也可以 ...

  8. IOS 设置ipone状态栏的样式

    /** 控制状态栏的样式 */ -(UIStatusBarStyle)preferredStatusBarStyle { //白色 return UIStatusBarStyleLightConten ...

  9. 是否应该提供一个dao.insertIgnoreNull ? (像updateIgnoreNull一样)

     是否应该提供一个dao.insertIgnoreNull ? (像updateIgnoreNull一样)  发布于 406天前  作者 SayingCode  153 次浏览  复制  上一个帖子  ...

  10. 2018.9.5 Java中使用栈来模拟队列

    栈的规律是是先进后出 队列的规律是先进先出 栈模拟队列 首先我们定义两个栈,一个放数据,一个出数据,判断B栈是否有元素,有元素则直接pop:没有元素则需要我们将A里面的元素出栈然后放到B里面,再取出, ...