008-2018-09-12 文件操作

news/2025/3/14 1:10:40/

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|打电话

 


 


http://www.ppmy.cn/news/710099.html

相关文章

新闻图片切换播放和自动切换播放以及链接功能【js+css设计】

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > < HTML lang zh-CN xmlns "http://www.w3.org/1999/xhtml" > < HEAD >< TITLE > 图片新闻效果 </ TITLE > < META http-equiv Content-Type cont…

软妹音程序员鼓励师24小时在线,只需一个VSCode插件,还能帮忙吐槽产品经理

一个神奇的 VSCode 插件 最近在 GitHub 发现了一个有趣的 VSCode 插件程序员彩虹屁插件&#xff0c;名叫 VSCode Rainbow Fart。在你写代码的时候&#xff0c;可根据关键字播放接近代码含义的小萝莉语音。 有了它&#xff0c;你们公司连“程序员鼓励师”的预算都省了。 &…

2020-09-13

2020年新的学期生活开始了&#xff0c;给大家分享几个软件工具&#xff0c;原来软件不仅有用&#xff0c;而且很有趣。先关注我&#xff0c;要不等你再回来&#xff0c;就迷路了。 1.安卓护眼助手软件 蓝光过滤可以避免眼睛疲劳&#xff0c;蓝色的光从智能手机或平板电脑导致眼…

error 系统错误 错误码10007_手把手教你用Python打造一个语音合成系统

击上方“ Python爬虫与数据挖掘 ”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 大弦嘈嘈如急雨&#xff0c;小弦切切如私语。 /前言/ 平时我们聊天的时候&#xff0c;也许会想着录制一些自己的声音&#xff0c;而且还想有点特色&…

用Python打造一个语音合成系统

击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 大弦嘈嘈如急雨&#xff0c;小弦切切如私语。 /前言/ 平时我们聊天的时候&#xff0c;也许会想着录制一些自己的声音&#xff0c;而且还想有点特色&#…

Android程序员必备精品资源

2019独角兽企业重金招聘Python工程师标准>>> 平时写程序中不断收集到的一些比较常用的东西&#xff0c;分享给大家。 实用工具集锦 Android Lifecycle https://github.com/xxv/android-lifecycleTinyPNG https://tinypng.com/Android Layout Finder Android Layout …

手把手教你用Python打造一个语音合成系统

击上方“Python爬虫与数据挖掘”&#xff0c;进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 大弦嘈嘈如急雨&#xff0c;小弦切切如私语。 /前言/ 平时我们聊天的时候&#xff0c;也许会想着录制一些自己的声音&#xff0c;而且还想有点特色&#…

java文件夹上传,保留文件夹结构

需求: 产品要求可以上传文件夹,文件夹下包含其他文件夹 前端上传文件夹,可以把文件以及所在文件所在文件夹信息传到后端 1.前端设置 需要设置 webkitdirectory enctype multipart/form-data <!DOCTYPE html> <html> <head><meta charset"UTF-8&…