内容概要:
一、文件操作
二、字符编码解码
三、函数介绍
<table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0"> |
<tr>
<td><span style="font-size: 16px;">一、文件操作</td>
</tr></table>
文件操作流程:
- 打开文件,得到文件句柄并赋值给一个变量
- 通过句柄对文件进行操作
- 关闭文件
基本操作:
f=open(,,encoding=)
data=f.read()
(data)
f.close()
打开文件模式:
-
r ,只读模式【默认】
-
w,只写模式【不可读:不存在则创建;存在则清空内容;】
-
x, 只写模式【不可读:不存在则创建,存在则报错】
-
a, 追加模式【不可读;不存在则创建;存在则只追加内容;】
“+”表示同时读写某个文件,特别注意在操作文件过程中明白文件指针的位置,稍后我会举例子说明文件针的问题。
- r+,可读写文件【可读;可写;可追加】
- w+,写读
- a+,追加读
"b"表示处理二进制文件,意思是"b"类型打开的文件读的内容是字节类型((如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
"U"表示在读取时,可以将 r n rn自动转换成 n (与 r 或 r+ 模式同使用),在中该模式已经废弃了,2.x版本中保留。
下面着重说明文件指针和读写文件的关系,同时演示下以“b”模式打开的文件读写操作。
文件内容:
Afraid our aim Where are you now
示列代码:
f=open(,,encoding= (f.tell())
data=f.readline()
(len(data),data)
(f.tell())
f.write()
(f.tell())
f.close()
28 29
186
Afraid our aim Where are you now我
f=open(, data= f.write(bytes(,encoding=))
< > b
29
32
附上处理文件时候使用的常用方法:
file.close()
file.flush()
file.fileno()
file.isatty()
file.next()
file.read([size])
file.readline([size])
file.readlines([sizehint]) 0,返回总和大约为sizeint字节的行,实际读取值可能比sizhint较大,因为需要填充缓冲区。
file.seek(offset[,whence])
file.tell()
file.truncate([size])
file.write(str)
file.writelines(list)
文件内容循环:
在对文件的操作过程中,最多的就是读取并处理文件内容,当文件很大的时候,使用read方法一次性读取是非常不明智的,不仅处理慢,还耗内存,此时我们可以使用for循环处理。
示列:
f=open(,encoding= line f:
(line.strip())
Afraid our aim Where are you now
?
tps:使用flush实现进度条效果
原理:
使用sys.stdout.write()方法向窗口输入字符(不换行),在使用flush强制刷新内存,打印在输出控制台上。
预备知识:
i range(1,101=*i
sys.stdout.write(%{}.format(num,i))
0.5)
关于with
为避免我们打开了文件进行操作以后没有关闭,使用with打开文件会自动调用close()方法关闭文件,同时在python2.7以后with也提供了同时打开多个文件的上下文管理。
示列:修改文件
with open(,encoding=) as f1,open(,,encoding= line f2.write(line)
<table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0">
<tr>
<td><span style="font-size: 16px;">二、字符编码解码</td>
</tr></table>
首先需要了解的知识:
1.在python2x中默认字符编码是ASCII,而在python3里默认是utf-8
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),utf-8就是unicode
3.在pyhton3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
4.更多的编码知识请参考http://www.cnblogs.com/yuanchenqi/articles/5956943.html
日常疑难杂症状之windows编码问题:
test=
(test)
结果:

右键-->属性,在当前页面栏。
换个姿势让windows输出中文,这就是接下来要讲的编码解码():
test=
temp=test.decode(encoding=
new_test=temp.encode()
(new_test)
你好
在中解码编码流程如下:

由于在python3中默认的字符编码改为了unicode,所以对于python3中的编码解码过程如下:

:
python2中:
test=
new_test=test.decode().encode(
我来了
?在python3中由于默认编码改变,并且编码的时候会将字符串转为bytes类型,若需要输出为字符串类型需要解码。
(sys.getdefaultencoding())
test=
gbk_test=test.encode()
(gbk_test)
(gbk_test.decode().encode())
(gbk_test.decode())
utf-8
b
b
你好
<table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0">
<tr>
<td><span style="font-size: 16px;">三、函数介绍</td>
</tr></table>
1.为何使用函数
2.语法
返回值
简单示列:
(% test()
this WD
3.函数参数与局部变量
变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
示列:
test(x,y):
x+y
a=test(3,5)
8
4.函数参数传递
<div class="cnblogs_code">
( name=
age=22
city=
msg(name,age,city)
msg(_name=name,_age=age,_city=city)
msg(name,_city=city,_age=age)
name:WD,age:22 name:WD,city:beijing
name:WD,age:22,city:beijing
5.设置默认参数和非固定参数
设置默认参数:作用就是当我们没有传递该参数时候,调用函数会传递参数的默认值,当传递了该默认参数的值时候,采用传递的值。
示列:
test(age,name=):
test(22)
test(22,)
WD 22
alex 22
非固定参数:若函数在定义时不确定调用时候想传入多少个参数,就可以使用非固定参数
语法:
1.*参数(如*args),该形式会将传入的参数当作数组处理
示列:
test(name,* test(,22,,, test(,38 wd 22 (,,)
< >
jack 38 ()
< >
2.**参数(如**kwargs),该形式会将传入的参数作为字典处理
示列:
test(name,** test(,jack=22,job=)
wd 22 {: ,: 22 < >
6.全局变量与局部变量()
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时,在定义局部变量的子程序内,局部变量起作用,在其它地方全局变量起作用。
示列:
name =
( % name=
( %
change_name( (% before after WD
若要修改全局变量,必须首先使用global声明()
示列:
name =
name
( % name=
( %
change_name( (% before after jack
当全局变量为等这些数据类型的时候,修改局部变量,同样也修改了全局变量。
示列:
name =[1,2,3]
( % name[0]=
( %
(%name)
before [1,3 after [,3 [,3]
7.返回值
如果在默写场景下,我们要想获取函数的执行结果,就可以用return语句把结果返回
注意:
- 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,也可以理解为 return 语句代表着函数的结束
- 如果未在函数中指定return,那这个函数的返回值为None?
- 返回值可以是字符串、数字、列表、甚至可以是函数
示列:
( %(x,y,x+ x>yy的结果
a=add(3,4 3+4=7
False
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!