内容回顾

  1. 数据类型的补充

    • str:pass
    • tuple:
      • (1)----->int
      • count 计数
      • index 通过元组获取索引
    • list
      • sort 排序从小到大
      • sort(reverse=True)排序从大到小
      • 列表相加 列表与数字相乘
      • 循环列表的问题
    • dict
      • update 更新,增加值,修改值,创建字典,将一个字典所有键值对覆盖添加到原字典
      • dict.fromkeys(iterable,value)
        • 如果value是个可变的数据类型,任何一个变,都变
    • 数据类型的转换:
      • 0、{}、[]、set()、''、()、None
  2. 编码的进阶

    ​ ASCLL、GBK、Unicode、Utf-8……

    1. 所有编码本(除去Unicode以外),不能直接互相识别
    2. 在内存中所有数据必须是Unicode编码存在,除了bytes类型

     3. str----->bytes:encode称为编码,编成计算机看的码,反之decode叫解码,解成人能读的代码
  3. 练习题

#看代码写结果
v1=[1,2,3,4,5,6,7,8,9]
v2={}
for item in v1:
if item<6:
continue
if 'k1' in v2:
v2['k1'].append(item)
else:
v2['k1']=[item]
print(v2) ## {'k1':[6,7,8,9]}
#深浅copy相关
import copy
#
v1=[1,2,3,4,5]
v2=copy.copy(v1)
v3=copy.deepcopy(v1) print(v1[0] is v2[0]) #True
print(v1[0] is v3[0]) #True
print(v2[0] is v3[0]) #True #
v1=[1,2,3,4,[11,22]]
v2=copy.copy(v1)
v3=copy.deepcopy(v1) print(v1[-1] is v2[-1]) #True
print(v1[-1] is v3[-1]) #False
print(v2[-1] is v3[-1]) #False
#利用python代码构建一个这样的列表(升级题):
#[['_','_','_'],['_','_','_'],['_','_','_']]
print([['_']*3]*3)
#用户输入一个数字,判断这个数是否是水仙花数
#水仙花数是一个三位数,三位数每一位的三次方之和等于这个数.
#
#例如:153=1**3+5**3+3**3
num=input('请输入三位数:') #153\370
count=0
if num.isdecimal():
for i in num:
count += int(i)**3
if count == int(num):
print('是水仙花数')
else:
print('不是水仙花数')
else:
print('请输入纯数字...')
#删除姓李的人
#应该倒序删除,不影响索引值
lst=['李老二','李老师','李星星','麻花疼']
for i in range(len(lst)-1,-1,-1):
if lst[i].strip()[0]=='李':
lst.pop(i)
print(lst) #['麻花疼']
#车牌区域划分,现给出以下车牌,根据车牌的信息,分析出各省的车牌持有量.
#
#locals={'沪':'上海','黑':'黑龙江','鲁':'山东','鄂':'湖北','湘':'湖南','京':'北京'}
#cars=['鲁A32444','鲁B12333','京B8989M','黑C49678','黑C46555','沪B22333']
#
#结果:{'山东': 2, '北京': 1, '黑龙江': 2, '上海': 1}
##################################################
locals={'沪':'上海','黑':'黑龙江','鲁':'山东','鄂':'湖北','湘':'湖南','京':'北京'}
cars=['鲁A32444','鲁B12333','京B8989M','黑C49678','黑C46555','沪B22333']
dic={}#在循环中给字典增加键值对
for i in cars:
if locals[i[0]] not in dic.keys():
dic[locals[i[0]]]=1 #没有键就创建一个键的思想
else:
dic[locals[i[0]]] += 1
print(dic) #{'山东': 2, '北京': 1, '黑龙江': 2, '上海': 1}
##################################################
#另法dic.get()的使用
dic={}
for i in cars:
dic[locals[i[0]]]=dic.get(locals[i[0]],0)+1
print(dic) #{'山东': 2, '北京': 1, '黑龙江': 2, '上海': 1}

今日内容

  1. 文件操作的初识

    • 歪比巴卜的联系方式.txt

    • 利用python代码写一个很low的软件,去操作文件。

      • 文件路径:path
      • 打开方式:读r、写w、追加、读写、写读……
      • 编码方式:utf-8、gbk、gb2321……
      f1 = open('d:\联系方式.txt',encoding='utf-8',mode='r')
      content=f1.read()
      print(content)
      f1.close()
      '''
      open:是一个python内置函数,open底层调用的是操作系统的接口。
      f1:变量,f开头的变量,文件句柄(f1,fh,file_handler,f_h)
      对文件进行的任何操作,都要经过文件句柄,如f1.read()。
      encoding:可以不写,如果不写参数,默认的编码本是操作系统默认的编码。
      windows:默认编码gbk
      linux:默认utf-8
      mac:默认utf-8
      f1.close():关闭文件句柄
    • 文件操作的三步骤

      • 1.打开文件。
      • 2.对文件句柄进行相应操作。
      • 3.关闭文件。
    • 报错原因:

      • UnicodeDecodeError:文件存储时与文件打开时编码本运用不一致。
      • 路径找不到问题(解决:路径前加r'',使路径的反斜杠不被理解成特殊用意)
  2. 文件操作的读

    r,rb,r+,r+b四种模式

    • r:
    ##几个文件在一个文件夹下,路径可写相对路径
    f=open('文件的读',encoding='utf-8')
    content=f.read()
    print(content,type(content))
    f.close()
    '''
    汤达人
    a good boy
    Henri is,too <class 'str'>
    '''
    #read(n) 按照字符读取
    f=open('文件的读',encoding='utf-8')
    content=f.read(5)
    print(content)
    f.close()
    '''
    汤达人
    a
    '''
    #readline()按行读
    f=open('文件的读',encoding='utf-8')
    print(f.readline()) #汤达人
    f.close()
    #readlines()多行读,放到一个列表里
    f=open('文件的读',encoding='utf-8')
    print(f.readlines())
    f.close() #['汤达人\n', 'a good boy\n', 'Henri is,too']
    ##for读取
    f=open('文件的读',encoding='utf-8')
    for line in f:
    print(line)
    f.close()
    '''
    汤达人 a good boy Henri is,too
    '''
    • rb:(read bytes)操作的是非文本的文件。图片、视频、音频。
  3. 文件操作的写

    w、wb、w+、w+b四种模式

    #创建文件写入内容
    f=open('文件的写',encoding='utf-8',mode='w')
    f.write('随便写一点')
    f.close()
    #有文件,写入内容
    #先清空原文件内容,后写入
    f=open('文件的写',encoding='utf-8',mode='w')
    f.write('今天的学习')
    f.close()
    #以wb写入新文件(非文本)
    f=open('aaa.jpg',mode='rb')
    content=f.read()
    f.close()
    f1=open('bbb.jpg',mode='wb')
    f1.write(content)
    f1.close()
  4. 文件操作的追加

    a、ab、a+、a+b四种模式

    #每次运行一遍,会在原文件后面追加写入内容
    f=open('文件的追加',encoding='utf-8',mode='a')
    f.write('不错,确实')
    f.close()
  5. 文件操作的其他模式

    • r+(+就是增加一个功能,r+就是读写操作)
    #实现读完并追加,不会清空文件写
    f=open('文件的读写',encoding='utf-8',mode='r+')
    content=f.read() # 光标在哪从哪读
    print(content)
    f.write('得得得得得得得得') # 光标在哪从哪写
    f.close()
  6. 文件操作的其他功能

    总结:

    ​ 三个大方向

    读,四种模式:r、rb、r+、r+b

    写,四种模式:w、wb、w+、w+b

    追加,四种模式:a、ab、a+、a+b

    相应的功能:对文件句柄的操作:read、read(n)……

    • 补充:
    # tell()按字节获取光标的位置
    f=open('文件的读写',encoding='utf-8')
    print(f.tell()) #0
    content=f.read()
    print(f.tell()) #59
    f.close() #seek 调整光标的位置
    f=open('文件的读写',encoding='utf-8')
    print(f.seek(0)) #调整光标的位置是0字节处
    content=f.read()
    print(content)
    f.close() #flush 强制刷新
    f=open('文件的其他功能',encoding='utf-8',mode='w')
    f.write('sadvvccxefwdsda')
    f.flush()
    f.close()
  7. 打开文件的另一种方式

    #with open()
    #优点1:不用手动关闭文件句柄,会在一定时间内关闭
    with open('文件的读',encoding='utf-8')as f1:
    print(f1.read()) #优点2:可操作多个文件句柄
    with open('文件的读',encoding='utf-8')as f1,\
    open('文件的写',encoding='utf-8',mode='w')as f2:
    print(f1.read())
    f2.write('123ewadsafzxcsadadw') #缺点:待续
  8. 文件的改的操作

    对文件内容进行修改步骤:

    1.以读的模式打开原文件.

    2.以写的模式创建一个新文件.

    3.将原文件的内容读出来,修改成新内容,写入新文件.

    4.将原文件在内存中删除.

    5.将新文件重命名成原文件.

    #将'歌词'文件中所有的'哈哈'改成'Henri'
    #low版,因为read大文件不好用,而for好用
    import os
    # 1.以读的模式打开原文件.
    # 2.以写的模式创建一个新文件.
    with open('歌词',encoding='utf-8')as f1,\
    open('歌词.bak',encoding='utf-8',mode='w')as f2:
    # 3.将原文件的内容读出来,修改成新内容,写入新文件.
    old_content=f1.read()
    new_content=old_content.replace('哈哈','Henri')
    f2.write(new_content)
    # 4.将原文件在内存中删除.
    # 5.将新文件重命名成原文件.
    os.remove('歌词')
    os.rename('歌词.bak','歌词')
    #进阶版,使用for
    import os
    # 1.以读的模式打开原文件.
    # 2.以写的模式创建一个新文件.
    with open('歌词',encoding='utf-8')as f1,\
    open('歌词.bak',encoding='utf-8',mode='w')as f2:
    # 3.将原文件的内容读出来,修改成新内容,写入新文件.
    for line in f1:
    #old_line=line.strip()
    new_line=old_line.replace('Henri','哈哈')
    f2.write(new_line)
    # 4.将原文件在内存中删除.
    # 5.将新文件重命名成原文件.
    os.remove('歌词')
    os.rename('歌词.bak','歌词')
    • 有关清空的问题

      关闭文件句柄再次以w模式打开才涉及清空,不关闭则看光标位置读写。

今日总结

  • 文件操作:

    • r w a rb wb r+ ab重点记
    • read() wirte tell seek flush
    • 文件的改的代码(重点)。

明天学习

  • 函数的初识

Now代码总行数1349+242=1591行

python08day的更多相关文章

随机推荐

  1. 【LeetCode】476. 数字的补数 Number Complement

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 公众号:负雪明烛 本文关键词:Leetcode, 力扣,476, 补数,二进制,Pyth ...

  2. 【LeetCode】278. First Bad Version 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 二分查找 日期 题目地址:https://leetcode.c ...

  3. Interesting Yang Yui Triangle(hdu3304)

    Interesting Yang Yui Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  4. TriggerBN ++

    目录 motivation settings results motivation 用两个BN(一个用于干净样本, 一个用于对抗样本), 结果当使用\(\mathrm{BN}_{nat}\)的时候, ...

  5. Zookeeper基础教程(二):Zookeeper安装

    上一篇说了,一个Zookeeper集群一般认为至少需要3个节点,所以我们这里安装需要准备三台虚拟机: # 192.168.209.133 test1 # 192.168.209.134 test2 # ...

  6. 浅议像素化与体素化Part.1——平面图形像素化

    什么是像素化 学计算机的人往往都比较清楚图形和图像的区别,而且往往能够从数据结构的角度理解这两者的区别,一般来说,图形是由几何空间中的基本图元所组成,表现为用外部轮廓线条勾勒成的矢量图.例如由计算机绘 ...

  7. yum 下载安装包以及依赖包

    有时候我在用yum安装软件,依赖包比较多,还受网速的影响.所以我们可以将安装包以及依赖包下载到本地安装,这样会快捷很多. yum 提供了这种功能 yum -y install yum-utils 下载 ...

  8. Linux_接收文件(rz)和发送文件(sz)

    我们连接linux通常是使用一些ssh工具进行远程访问连接的,在使用过程中,少不了将本地文件上传到linux或将linux上的文件下载到本地,每次使用ftp比较繁琐而且浪费时间.我们可以使用linux ...

  9. Pandas系列(十七)-EDA(pandas-profiling)

    对于探索性数据分析来说,做数据分析前需要先看一下数据的总体概况,pandas_profiling工具可以快速预览数据. 安装 pip install pandas-profiling 使用 impor ...

  10. iview 按需引入解决加载慢的问题

    如果出现加载2s以上的情况请先查看服务器是否对大文件进行过压缩优化处理. 按照官方文档把iview引入到vue的项目中,全部引入的时候没问题.当按官方文档显示的按需加载是借助插件babel-plugi ...