加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python基础3之文件操作、字符编码解码、函数介绍

发布时间:2020-12-16 23:55:39 所属栏目:Python 来源:网络整理
导读:内容概要: 一、文件操作 二、字符编码解码 三、函数介绍 table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0" tr td span style="font-size: 16px;"一、文件操作 /td /tr /table 文件操作流程: 打开文件
<tr>
<td><span style="font-size: 16px;">一、文件操作</td>
</tr></table>

文件操作流程:

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

基本操作:

f=open(,,encoding=) data=f.read() (data) f.close()

打开文件模式

  • r ,只读模式【默认】

  • w,只写模式【不可读:不存在则创建;存在则清空内容;】

  • x, 只写模式【不可读:不存在则创建,存在则报错】

  • a, 追加模式【不可读;不存在则创建;存在则只追加内容;】

“+”表示同时读写某个文件,特别注意在操作文件过程中明白文件指针的位置,稍后我会举例子说明文件针的问题。

  • r+,可读写文件【可读;可写;可追加】
  • w+,写读
  • a+,追加读

"b"表示处理二进制文件,意思是"b"类型打开的文件读的内容是字节类型((如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

"U"表示在读取时,可以将 r n rn自动转换成 n (与 r 或 r+ 模式同使用),在中该模式已经废弃了,2.x版本中保留。

  • rU
  • r+U

下面着重说明文件指针和读写文件的关系,同时演示下以“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语句把结果返回

    注意:

    1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,也可以理解为 return 语句代表着函数的结束
    2. 如果未在函数中指定return,那这个函数的返回值为None?
    3. 返回值可以是字符串、数字、列表、甚至可以是函数

    示列:

    ( %(x,y,x+ x>yy的结果 a=add(3,4 3+4=7 False

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    内容概要:

    一、文件操作

    二、字符编码解码

    三、函数介绍

    <table style="height: 30px; width: 1132px; background-color: #afeeee; ; width: 1132px;" border="0">