python第三天:字符编码、文件操作、函数

作业问题回顾

表格化输出

主要考察字符串的expandtabs的方法,使用空格替换TAB。

百鸡百钱

百鸡百钱的主要是用进行多次判断,然后输出打印。

上课内容

字符编码

概念

编码是计算机用来将人类可读的字符存储成二进制信息而使用的一种格式。字符编码主要针对字符的编码。

python中相关的方法

decode:解码,将其他格式的数据转化为unicode格式的数据。转化以后就是Bytes类型的数据。Bytes的数据汉字会转化成字节码,而ascii码会转化成b‘meg’的形式。可以接参数,接的参数就是使用哪种字符编码进行解码。

encode:编码,将Unicode编码格式的数据(Bytes形式的)转化为其他的字符编码格式的数据。可以接参数,接的参数就是使用何种字符编码编码。

上面两种方法在网络编程的时候用的比较多。

py2和pyt3编码的区别

python2中字符串类型是Bytes类型,如果不指定编码,在不同的平台运行可能会出现乱码现象。

Python3当中,字符串类型默认是utf-8型的,而如果不执行的话在解释器中存储的字符串默认是UNICODE。

文件处理

打开文件

打开文件有两种方法:

1、创建一个文件对象,然后对这个文件对象进行操作。

f = open(‘test.txt’)

f.xxx

f.close

优缺点:优点是代码简单易读,缺点是代码量比较多,而且结构不清晰。

2.使用with打开一个文件对象,然后在子代码进行操作。

with open(‘b.txt’) as f,open(c.txt) as f1:

f.xxxx

f1.xxxx

优点:代码量较少,结构清晰。

只读模式和方法

如果打开文件的时候,不指定打开的方式,默认就是使用只读模式打开。只读模式的话只能读取文件的数据,不能对文件进行操作。

一些常用的方法:

seek:移动光标至指定的位置。

使用示例:seek(num,pat)

pat是模式,共有三种模式:0:从文件的开头开始移动光标。1:从光标的当前位置开始移动光标。2:从文件的末尾移动光标。其中0模式的话可以是任意打开方式。1和2模式的话必须以二进制的模式打开。

readlines():读取文件所有的内容划分成多个元素存到列表里面,元素是以/n为结尾的。

readline():一行一行的读取文件。

read():指定字符个数来读取文件内容。

tell():打印光标当前所在的位置。在文件断点续传的时候可能用的上。

插入模式和方法

打开文件时,在文件名后面记上参数’w’,就默认是以插入方式打开。这个模式打开的文件,如果原来有文件,就清空文件内容,如果原来没有文件,就新创建一个文件。

常用的方法:

truncate:切割文件,只保留从开始到指定位置的文件内容,其他的文件内容全部清空。

write:写入文件,将内容写入文件中。

writelines:写入文件,传送的参数是列表。

追加模式和方法

追加模式就是保留原文件的内容,然后在文件的最后追加文件内容。

write:写入文件,将内容追加到文件的后面。

更改文件

思路:更改文件的话,就是新建一个临时文件,将原来的文件的内容一行行的读,进行判断是否需要修改,需要修改的话就进行修改。然后再写到临时文件中。全部读完以后,再将临时文件的内容写回主文件。

代码示例:

import os

with open("test",encoding="utf-8") as f,open(".test1.swap",‘w‘,encoding="utf-8") as f1:

for n in f:

if "刀" in n:

n = n.replace("刀","剑")

f1.write(n)

with open("test",‘w‘,encoding="utf-8") as f, open(".test1.swap", ‘r‘, encoding="utf-8") as f1:

for n in f1:

f.write(n)

os.remove(".test1.swap")

断点续传

思路:在传输到一半的文件中,使用seek(0,2)和tell命令,判断光标移到的位置,并且返回值。然后完整的文件seek到那里继续读值。

代码示例

with open(‘test‘,encoding="utf-8") as f,open(‘test1‘,‘rb‘) as f1:

f1.seek(0,2)

size = f1.tell()

f.seek(size)

print(f.readlines())

函数

概念

在python中,函数分为两类,一类是内置函数,一类是自定义函数,自定义函数相当于是做一个工具,调用它就相当于是使用了这个工具一样。

在程序代码量较小的时候,不使用函数问题不是很大,但是当代码量上去了以后。维护的时候如果没有函数,会很麻烦。而且函数可以让代码更有结构感觉。

定义函数

定义函数的话使用def,一般定义函数做到以下几点,名字要有意义,易读。写函数主体之前一般要添加一些中文注释。介绍这个函数的功能,返回值一类的东西。

格式如下:

def fun_name():

“测试函数”

print(“hello world”)

使用函数

使用函数:使用定义好的函数。

一般有如下三种方式使用函数:

1.直接调用函数

直接调用函数,通常是调用无参函数时候的用法。

2.将函数返回值赋给变量

val = foo(),将函数的返回值赋给一个变量使用。

3.将函数作为参数放到另一个函数当中

将函数作为一个变量传给另一个函数。

max(max(20,10),30)

三元表达式:  将正确的返回值放在if的左边,条件不成立的加上else 写在if的右边。

eg:print(a) if a>b else print(b)

函数的返回值

函数返回值主要分为以下几种情况:

1.返回None:函数主体里面没有return,return里面什么都不写,直接return None。

2.返回单个值:直接在return后面接变量或者值。

3.返回多个值:return后面用逗号隔开,接受的话也要使用多个变量接收,如果不想用到这个变量又想节省内存空间可以使用_来接收。多个-,-,-,-,-,-可以用*-来表示。a,*-,b表示只接受第一个返回值和最后一个返回值。

函数参数

函数的参数分为形参和实参两种。

还可以根据表现形式分为五种类型:

1.位置参数(主要针对实参):

位置参数主要是指实参给形参的时候,按位置传递参数。

eg:

def   foo(x,y,z):

print(x,y,z)

foo(1,2,3)

如果是按位置传递的参数,必须数量要对应上,而且顺序也要对应上。比如上面的例子就是把1赋给x,2赋给y,3赋给了z。

2.关键字参数(主要针对实参)

关键字参数主要是指实参在给形参传递数值的时候,可以精确的赋值。

eg:

def  foo(x,y,z):

print(x,y,z)

foo(z=1,x=3,y=2)

上面的例子就是将x=3,y=2,z=1赋给形参,数量必须要对应上,但是位置可以不对应上。

关键字参数可以和位置参数混合使用,但是在传递的过程中,不能穿插使用,必须是位置参数在前,关键字参数在后。

3.默认参数(主要是针对形参)

在定义形参的时候,可以给形参定义一些默认的值,在实参没有给他传值的情况下,使用这些默认的值。

默认参数要放在其他的参数的后面。

4.不定长参数(主要针对形参)

不定长的参数主要的形式有*和**,*是接受所有的位置参数,形成一个元组,赋给*后面的变量。**是接受所有的关键字参数,形成一个字典,赋给**后面的变量。

eg:

def foo(x,y,*args,**kwargs):

print(args,kwargs)

5.命名关键字参数(不常用)

在使用变长参数以后,希望变长参数里面有一些自己需要的关键字参数。用这种形式

eg:

def  foo(x,y,*,sex,heigh):

print(x,y,sex,heigh)

这种方式定义的话,如果不用关键字参数传输sex和heigh就会报错。

时间: 05-13

python第三天:字符编码、文件操作、函数的相关文章

python开发基础:字符编码&文件操作

一,字符编码 1 以什么编码存的就要以什么编码取出 ps:内存固定使用unicode编码, 我们可以控制的编码是往硬盘存放或者基于网络传输选择编码 2 数据是最先产生于内存中,是unicode格式,要想传输需要转成bytes格式#unicode----->encode(utf-8)------>bytes拿到bytes,就可以往文件内存放或者基于网络传输#bytes------>decode(gbk)------->unicode 3 python3中字符串被识别成unicode

python学习笔记第四节(字符编码+文本操作+函数)

python中不存在常量这个意义只能用大写命名来说明这个赋值是个常量,实际均为变量 字符编码 内存中是unicode硬盘中是utf-8中间需要转换 python只有执行的时候才有字符编码的概念python2默认ascii码python3默认unicode 文件操作 写操作,w 没有就新建有则覆盖,a是追加 name 查看文件名encoding 查看字符编码 查看是否可读查看是否可写 true false 以文件字符来显示 seek 移动光标位置,以文件起始来读,字节,以0为单位utf-8三个字符

Python基础day-5[字符编码,文件处理,函数]

字符编码: 为什么要有字符编码?字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 字符编码其实就是在完成一件,字符====>数字的翻译过程. ASCII: 最早计算机是美国发明的,所以最早诞生的ASCII码也是基于英文考虑的.ASCII码:一个Bytes代表一个字符,1Bytes=bit.最早的ASCII只用到后七位. 127个数字,已经完全能代表键盘了,后来又把127号之后的空位来表示新的字母.符号,还加入

PYTHON 之路 (二) 文件操作/函数/面向对象编程

文件操作 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内容:] a,追加模式.[可读:   不存在则创建:存在则只追加内容:] "+" 表示可以同时读写某个文件 r+,可读写文件.[可读:可写:可追加] w+,写读 a+,同a "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用) rU r+U &qu

Python学习系列(五)(文件操作及其字典)

Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如: 1 #coding:utf-8 2 fn='test1.py' 3 fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下py 4 print 'reading pos:',fp.tell() 5 r=fp.read(20) #

总结文件操作函数-目录(三)-C语言

获取.改变当前目录: 原型为: #include <unistd.h>   //头文件 char *getcwd(char *buf, size_t size); //获取当前目录,相当于pwd命令 int chdir(const char *path); //修改当前目录,即切换目录,相当于cd命令 其中getcwd()函数:将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小. 在调用此函数时,buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度超

总结文件操作函数(二)-C语言

格式化读写: #include <stdio.h> int printf(const char *format, ...);                   //相当于fprintf(stdout,format,-); int scanf(const char *format, -); int fprintf(FILE *stream, const char *format, ...);      //中间的参数为写入文件的格式 int fscanf(FILE *stream, const

总结文件操作函数(一)-C语言

在进程一开始运行,就自动打开了三个对应设备的文件,它们是标准输入.输出.错误流,分别用全局文件指针stdin.stdout.stderr表示,对应的文件描述符为0,1,2:stdin具有可读属性,缺省情况下是指从键盘的读取输入,stdout和stderr具有可写属性,缺省情况下是指向屏幕输出数据. 将文件路径转化为文件指针: #include <stdio.h>  //头文件包含 FILE *fopen(const char *pach,const char *mode);  //文件名  模

第二讲文件操作函数(第139讲)

一:file_get_contents(filename) 和 file_put_contents(filename, data) 1 <?php 2 /** 3 file_get_contents(filename) 可以获取一个文件的内容或一个网络资源的内容 4 该函数是读取文件/网络资源比较快捷方式,它封装了打开/关闭等操作 5 注意:该函数会把文件中的内容一次性全部读出,然后放到内存中,因此,过大的文件慎重用该函数打开 6 */ 7 //当前目录下的a.txt文件 8 $file = &qu