1.今日内容大纲

一. 昨日内容回顾1. join()  可以吧列表转化成字符串split() 把字符串转化成列表2. 关于删除列表在循环的时候不能进行删除. 索引会跟着你删除而改变创建新列表. 把要删除的内容放在新列表中. 循环新列表. 删除老列表字典在循环中不能删除.字典在循环的时候不能改变大小.创建列表. 把要删除的key保存在列表中. 循环列表删除字典fromkeys(keys, value) 使用keys中的元素和value组合成key:value创建新字典3. set集合特点: 无序, 不重复, 可哈希set集合本身可变的. 不可哈希. frozenset()4. 深浅拷贝1. 赋值. 没有创建新对象.2. 浅拷贝. 创建新的对象. 浅拷贝只复制一层内容3. 深拷贝. 创建新对象. 把整个对象的内部全部都进行拷贝\女神(eva_j)的博客
二. 作业讲解三. 今日主要内容对文件内部的内容进行操作1. open("文件路径", mode="模式", encoding="编码")文件的路径:1. 绝对路径:1. 从磁盘根目录寻找2. 网络上的路径2. 相对路径相对于当前你这个程序所在的文件夹.(用的最多的)模式r  读. 只读模式w  写 只能写a  追加写, 只能写入b: bytes 这个时候处理文件的是字节操作非文本文件的时候用带b的rbwbabr+  读写模式w+  写读模式a+  追加读模式r+bw+ba+b光标:移动到开头: seek(0)移动到末尾: seek(0, 2)文件的修改:1. 从源文件中读取内容. 修改内容. 写入到文件副本中.2. 删除源文件. 重命名文件副本为源文件的名字with open(..) as f :明天预习:函数(非常重要, 简单)参数, 返回值

2.练习

'''
1. 判断一个数是否是水仙花数, 水仙花数是一个三位数, 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数, 例如: 153 = 1**3 + 5**3 + 3**32. 给出一个纯数字列表. 请对列表进行排序(升级题).
思路:
1. 完成a和b的数据交换. 例如, a = 10, b = 24 交换之后, a = 24, b = 10
2. 循环列表. 判断a[i]和a[i+1]之间的大小关系, 如果a[i]比a[i+1]大. 则进行互换. 循环结束的时候. 当前列表中最大的数据就会被移动到最右端.
3. 想一想, 如果再次执行一次上面的操作. 最终第二大的数据就移动到了右端. 以此类推. 如果反复的进行执行相应的操作. 那这个列表就变成了一个有序列表.3. 完成彩票36选7的功 能. 从36个数中随机的产生7个数. 最终获取到7个不重复的数据作为最终的开奖结果.
随机数:
from random import randint
randint(0, 20) # 0 - 20 的随机数4. 税务部门征收所得税. 规定如下:1). 收入在2000以下的. 免征.2). 收入在2000-4000的, 超过2000部分要征收3%的税.3). 收入在4000-6000的, 超过4000部分要征收5%的税.4). 收入在6000-10000的, 超过6000部分要征收8%的税.4). 收入在10000以上的, 超过部分征收20%的税.注, 如果一个人的收入是8000, 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.收入 = 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
让用户输入它的工资, 计算最终用户拿到手是多少钱.默写:
简述什么是深浅拷贝.
删除列表中姓周的人的信息
lst = [‘周芷若’, ‘周伯通’, ‘王重阳’, ‘周葫芦娃’]'''# 1.判断一个数是否是水仙花数, 水仙花数是一个三位数,
# 三位数的每一位的三次方的和还等于这个数.
# 那这个数就是一个水仙花数,
# 例如: 153 = 1**3 + 5**3 + 3**3# num = input("请输入一个三位数:")
# if len(num) == 3:
#     result = int(num[0])**3 + int(num[1])**3 + int(num[2])**3
#     if int(num) == result:
#         print("是一个水仙花数")
#     else:
#         print("不是水仙花数")
# else:
#     print("亲, 你输入的不是三位数")
## 3.完成彩票36选7的功能. 从36个数中随机的产生7个数. 最终获取到7个不重复的数据作为最终的开奖结果.
# 随机数:
# from random import randint
#
# s = set()
# while len(s) < 7:
#     n = randint(1, 33)
#     s.add(n)
# print(s)# 税务部门征收所得税. 规定如下:
#         1). 收入在2000以下的. 免征.
#         2). 收入在2000-4000的, 超过2000部分要征收3%的税.
#         3). 收入在4000-6000的, 超过4000部分要征收5%的税.
#         4). 收入在6000-10000的, 超过6000部分要征收8%的税.
#         4). 收入在10000以上的, 超过部分征收20%的税.
#     注, 如果一个人的收入是8000, 那么他要交2000到4000的税加上4000到6000的税加上6000到8000的税.
#         收入 = 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
# 让用户输入它的工资, 计算最终用户拿到手是多少钱.# salary = int(input("请输入你的工资:"))
# if salary <= 2000:
#     print("你不用交税")
#     print("你的实际收入是%s" % salary)
# elif salary <= 4000:
#     tax = (salary - 2000)*0.03
#     print("你要交%s税 " % tax)
#     print("你的实际收入是:%s" % (salary-tax))
# elif salary <= 6000:
#     tax = 2000* 0.03 + (salary-4000) * 0.05
#     print("你要交%s税 " % tax)
#     print("你的实际收入是:%s" % (salary - tax))
# elif salary <= 10000:
#     tax = 2000* 0.03 +  2000*0.05 +(salary - 6000) * 0.08
#     print("你要交%s税 " % tax)
#     print("你的实际收入是:%s" % (salary - tax))
# else:
#     tax = 2000 * 0.03 + 2000 * 0.05 + 4000 * 0.08 + (salary-10000) * 0.20
#     print("你要交%s税 " % tax)
#     print("你的实际收入是:%s" % (salary - tax))
#
## a = 10
# b = 20
# c = a
# a = b
# b = c
# print(a, b)# a = 10
# b = 20
# a, b = b, a
# print(a, b)# 大学课程中的数据结构-严蔚敏.
# 冒泡排序(使用两两相邻的数进行比较.) 快排, 插入排序, 归并排序, 堆排序, 希尔排序
#       0    1    2    3   4     5    6
lst = [175, 160, 185, 134, 196, 128, 155, 170, 185, 189, 236]
for j in range(len(lst)):# 第i个和第i+1个比较for i in range(len(lst)-1): # 自己优化if lst[i] > lst[i+1]:lst[i], lst[i+1] = lst[i+1], lst[i]
print(lst)

3.基本文件操作

# f = open("d:/小护士模特少妇女网红.txt", mode="r", encoding="UTF-8")
# # content = f.read()  # 读取内容, 读取3个字符
# line1 = f.readline().strip() # 空白: 空格, \t, \n
# line2 = f.readline().strip()
# print(line1)
# print(line2)# content = f.read()  # 一次全都读取出来. 缺点: 1. 读取大的文件的时候. 内存容易溢出 2. 操作比较麻烦# content = f.readlines() # 也是全都加载进来了.
# print(content)# f是一个可迭代对象
f = open("d:/周润发大战奥特曼.txt", mode="r", encoding="utf-8") # 默认跟着操作系统走的  GBK
# for line in f:  # 内部其实调用的是readline()
#     print(line)
# f.close() # 关闭# 打印的末尾是换行
# print("哈哈")
# print("呵呵")

4.write()

f = open("d:/sylar.txt", mode="w", encoding="utf-8")
f.write("周笔畅\n") # 写的时候. 先清空. 再写入. w
f.write("胡辣汤\n")
f.write("实付款\n")f.flush()
f.close()

5.append()

f = open("d:/sylar.txt", mode="a", encoding="utf-8")
f.write("娃哈哈") # 追加写
f.write("爽歪歪")
f.flush()
f.close()

6.文件拷贝

f1 = open("d:/linux学院-桌面背景.jpg", mode="rb")
f2 = open("E:/刘伟自拍.jpg", mode="wb")
for line in f1:f2.write(line)
f1.close()
f2.flush()
f2.close()

7.读写模式

f = open("菜单", mode="r+", encoding="utf-8")  # r+最常见
s = f.read(1) # 读取一个字符
print(s)
f.write("胡辣汤") # r+模式. 如果你执行读了操作. 那么写操作的时候. 都是写在文件的末尾. 和光标没有关系
# f.write("ab") # 在文件开头写入. 写入的是字节,把原来的内容盖上# for line in f:
#     print(line)
# f.write("蛋炒饭")
# 正确用法: 先读后写
f.close()

8.写读模式

f = open("菜单", mode="w+", encoding="utf-8")  # 很少用.
f.write("疙瘩汤")
f.seek(0)   # 移动到开头
content = f.read()
print("读取的内容是", content)
f.flush()
f.close()

9.追加模式

f = open("菜单", mode="a+", encoding="utf-8")
f.write("韭菜鸡蛋饺子")f.seek(0)
content = f.read()
print(content)

10.光标

f = open("菜单", mode="a+", encoding="utf-8")  # r+ a+ w+# f.write("我要多写一点内容. 然后争取能看到效果")
# f.seek(0)
# print(f.read())
# f.seek(0)
# f.write("你")
#
# f.seek(0)
# print(f.read(1))
# f.seek(0)
# f.write("大米饭")
# f.write("大米粥")
# print(f.tell())
# f.seek(3) # 字节
# print(f.read(1))
# # print(f.read(1)) # 字符
# # print(f.read(1)) # 字符
# print(f.tell()) #字节
# 使用tell()可以知道光标在哪里
# seek()可以移动光标
# 读写的时候. 单位 字符
# 光标: 单位是字节
#  光标移动到末尾: seek(0,2)# seek(偏移量, 位置)
# 位置: 0开头, 1当前位置, 2末尾
# 移动到末尾: seek(0, 2)

11.truncate()

f = open("我的天呐", mode="r+", encoding="utf-8")
f.seek(9)
f.truncate(12) # 如果没有参数. 按照光标来阶段. 如果有参数. 截断到参数位置
f.flush()
f.close()

12.修改文件

import os # 引入os模块with open("alex", mode="r", encoding="utf-8") as f1, \open("alex_副本", mode="w", encoding="utf-8") as f2:for line in f1:new_line = line.replace("good", "sb")f2.write(new_line)os.remove("alex")
os.rename("alex_副本", "alex")

13.日志处理


result = []
with open("2018-09-12.log", mode="r", encoding="utf-8") as f:hang = f.readline()title = hang.split("|")for line in f:line = line.strip()  # 去掉空白, 2018-09-11 00:00:01|刘伟|吃鸡lst = line.split("|")dic = {title[0]: lst[0], title[1]: lst[1], title[2]: lst[2]}result.append(dic)
print(result)

14.其他

破文件.txt:我是一个破文件.fasdlkhfjasdkl

操作.py:

import requests # 网络请求rs = requests.get("http://pic.netbian.com/uploads/allimg/180906/180605-153622836527b2.jpg")
f = open("壁纸.jpg", mode="wb")
f.write(rs.content)
f.flush()
f.close()

2018-09-12.log.txt:

时间|名字|action
2018-09-11 00:00:01|刘伟|吃鸡
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:01|刘伟|吃鸡
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话
2018-09-11 00:00:02|darin|打电话

008-2018-09-12 文件操作相关推荐

  1. Python入门学习笔记——12.文件操作

    ##################################################### # 1.文件写入 # 写入操作 ''' 1.打开文件 open()参数1:文件路径路径 ur ...

  2. 人大网院计算机在线考试答案,2018年12月计算机二级MSOffice操作题及参考答案

    [导语]2018年12月计算机二级考试在即,为了方便广大考生及时获取相关备考资料,下面无忧考网为您精心整理了,希望广大考生及时关注,更多计算机二级考试的相关资讯,请关注无忧考网计算机等级考试频道. 1 ...

  3. Shell学习(12)文件操作

    文件操作 取得目录内容 ls getconf ARG_MAX 判断文件是否存在 建立文件 建立一般文件: 建立文件 1 使用转向输出:> text.txt 2 配合空命令: :> test ...

  4. 12.Python文件操作与字符编码

    字符编码 字符编码的作用 计算机只认识0和1组成的二进制序列,因此任何文件中的内容(比如"hello neuedu","你好,东东教程"这些字符串)要想被计算机 ...

  5. python文件操作和绘制曲线

    目录 一 当前文件路径 二 python路径拼接os.path.join()函数的用法 三 print格式化输出 四 将 print 输出到文件 五 log模块 1 配置文件 2 全局log 3 使用 ...

  6. Java学习总结:41(文件操作类:File)

    Java文件操作类:File 在java.io包中,如果要进行文件自身的操作(例如:创建.删除等),只能依靠java.io.File类完成. File类的常用操作方法 No. 方法 类型 描述 1 p ...

  7. C/C++语言入门篇 -- 文件操作

    最近实在是太忙了,这篇整整就推迟了1个月了,实在是对不起.之前本打算这个模块就结束了,文件操作就不写了,但是文件操作又是一个很重要的东西,而且也刚好能够总结之前我们学习的所有知识.同时也为了将文件操作 ...

  8. Python文件操作学习总结

    Python读写文件 1.open 使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open( ...

  9. C#文件操作(IO流 摘抄)

    11 文件操作概述 11.1 驱动器 在Windows操作系统中,存储介质统称为驱动器,硬盘由于可以划分为多个区域,每一个区域称为一个驱动器..NET Framework提供DriveInfo类和 D ...

  10. 2018年12月份GitHub上最热门的Java开源项目

    2018年12月份GitHub上最热门的Java开源项目 又到了公布 GitHub 上热门项目的时候啦~在 12 月的排行中,现在,一起来看看这些项目你使用过哪些呢? JavaGuide https: ...

最新文章

  1. matlab极大值点个数,求一组数的极大值个数
  2. Toward Multimodal Image-to-Image Translation(BicycleGAN)图像一对多转换测试
  3. jQuery EasyUI DataGrid - 格式化列(formatter )
  4. Vue——vue-chartjs[Vue 对于 Chart.js 的封装]
  5. ios 图片截取功能 图片拼接功能
  6. html5创建对象的方法,JavaScript面向对象-使用工厂方法和构造函数方法创建对象...
  7. vSphere Client 编辑虚拟机属性的问题
  8. Elasticsearch环境搭建和介绍(Windows)
  9. node配置ssl证书_在Linux服务器上部署node项目(git部署,forever持续运行,配置SSL证书)...
  10. JavaScript创建页面节点
  11. diff git 指定时间_【GIT】从指定分支两个Tag中获取差异文件,进行代码的增量更新...
  12. mysql中explain使用
  13. 以太坊的POS共识机制友善的小精灵 Casper
  14. DO447安装红帽Ansible Tower
  15. Python将base64编码转换为图片并存储
  16. 自学编程/如何自学编程//自学C语言/如何自学C语言//自学java/如何自学java?
  17. 共享换电:车企筑垒,宁王拆墙
  18. execl表格同时打开多个独立窗口编辑
  19. php crc16计算,如何在PHP HEX中计算CRC16 CCITT?
  20. android 定时删除文件,使用安卓手机,记得定期清理这4个文件夹,可轻松释放大量空间...

热门文章

  1. windows 7 旗舰版 失效key
  2. java怎么读取docx文件_java – 如何显示或读取docx文件
  3. 搜索Instagram用户名API
  4. 如何在Linux下安装和启动Dragonfly
  5. Unity5.1 新的网络引擎UNET(一) 概括1
  6. MyBatis第N+1种分页方式,全新的MyBatis分页
  7. 第五篇:手把手教你移植任天堂,没有声音、无需外置SD卡、可使用独立按键也可使用外置手柄,本人使用的芯片为ESP32,移植到STM32均可使用。(本篇完结nes模拟器的移植)
  8. Keras中那些学习率衰减策略
  9. Wordpress红色财经股票外汇网站主题 pron-red
  10. 美国伊利诺伊大学香槟分校计算机专业,伊利诺伊大学香槟分校