python开发基础之字符编码、文件处理和函数基础
字符编码
为什么要有字符编码?
字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"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开发基础之字符编码、文件处理和函数基础的更多相关文章
- python第二周数据类型 字符编码 文件处理
第一数据类型需要学习的几个点: 用途 定义方式 常用操作和内置的方法 该类型总结: 可以存一个值或者多个值 只能存储一个值 可以存储多个值,值都可以是什么类型 有序或者无序 可变或者不可变 二:数字整 ...
- Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)
字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"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 ...
随机推荐
- CSS改变placeholder的颜色
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #a1a1a1; } ::-moz-placeholder { /* Mozilla ...
- Mvc过滤器的使用【转载】
前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中不想让MVC开发人员去关心和写类似身份验证,日志,异常,行为截取等这部分重复的代码 ...
- SPFieldLookupValue class
using System; using Microsoft.SharePoint; namespace ConsoleApp { class Program { static void Main(st ...
- Redis 基础概念和命令
Redis 是什么 Redis是一种基于键值对(key-value)的NoSQL数据库. 为什么使用Redis 速度快 Redis的时间颗粒度一般是微秒,慢查询的默认值是10 000微秒,即10毫秒. ...
- Windows 静态IP脚本
@echo off echo 快速设置IP地址和DNS为“静态” set 连接名称=以太网 set ip地址=192.168.1.80 set 子网掩码=255.255.255.0 set 网关地址= ...
- Selenium入门系列3 单个元素的定位方法
UI自动化首先要识别对象,再操作对象,最后判定实际结果与预期结果是否一致. 这一节学习的是识别单个对象,webdriver提供了8种方式. <a id="idofa" cla ...
- vue中列表的过渡
<style> .v-enter,.v-leave-to{ opacity: 0; } .v-enter-active,.v-leave-active{ transition: opaci ...
- linux命令之grep命令
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...
- 问题 B: 投简历
题目描述 小华历经12寒窗苦读,又经历4年大学磨砺,终于毕业了,随着毕业季的到来,找工作也日益紧张起来.由于要面试不同的公司,因此小华需要准备不同的简历.当然最基本的信息是必不可少的,基本信息:姓名. ...
- Python中的__name__和__main__含义详解
1背景 在写Python代码和看Python代码时,我们常常可以看到这样的代码: ? 1 2 3 4 5 def main(): ...... if __name == "__m ...