第11章 2 文件和io操作 +

news2024/9/21 14:32:24

本章总结和章节选择题 p160

在这里插入图片描述
很奇怪,只有先写了列表,在遍历file 才有打印

若文件原来就有内容,w+ open 完之后,文件内容就被清空了


open操作若不指定打开模式,默认打开模式是'r'


文本打开时,是按照字符串
在这里插入图片描述

实战一 批量创建文件 p160

补充点:
1、如何将1到3000输出为 0001 到 3000
print('{0:0>4}'.format(2)) 第6章1-字符串及正则表达式 p63

2、随机数如何使用

导入模块
import random
import time
获取当前时间戳 作为随机数的种子
now=time.time() 返回一个浮点数
random.seed(now) now作为浮点数是否可以作为seed的参数?(应该是可以的,程序没报错)也可以不加参数,默认是当前的时间 

randint(a,b)	生成一个[a,b]之间的整数

3、判断路径是否是有效路径?
os.path模块中的isdir(path)方法
引入方法:import os.path

4、如何创建文件?
f=open(‘f.txt’,‘w’) 就是通过open操作


个人编码解答:

import random
import time
import os.path
import os

# 不传参,以当前时间作为随机数种子
random.seed()

def create_file(path):
    # 先判断路径是否合法
    if os.path.isdir(path)==False:
        print(path,'为不合法路径,无法进行创建文件')
        return

    item_lst=['水果','烟酒','粮油','肉蛋','蔬菜']
    # 改变工作目录到path
    os.chdir(path)
    print('当前工作目录为:',os.getcwd())
    # 下面开始批量创建文件
    for i in range(1,3001):
        # 构造文件名字符串
        filename='{0:0>4}_{1}_{2:9x}.txt'.format(i,random.choice(item_lst),random.randint(0,0xfffffffff))
        print(filename)
        with open(filename,'w') as file:
            pass

create_file('E:\斗鱼视频\直播数据')

# 拓展:若路径不存在可以先创建路径,再在此路径下创建文件
# 教程代码
# if __name__=='__main__'

教程解法 + 自己改进(若路径不存在,则先创建路径)

教程解法和自己的解法的主要区别就是:在16进制随机数的生成上,我是通过randint指定范围0到0xfffffffff之间随机,而教程是通过9此循环每次循环随机取以为十六进制数的可能取值

import random
import os
import os.path
import time

def create_filename(path):
    if os.path.isdir(path)==False:
        os.makedirs(path)
    os.chdir(path)
    print('当前的工作路径:',os.getcwd())
    filename_lst=[]
    lst=['水果','烟酒','粮油','肉蛋','蔬菜']
    code=['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f']

    for i in range(1,3001):
        filename='{0:0>4}_'.format(i)
        filename+=random.choice(lst)+'_'
        s=''
        for j in range(9):
            s+=random.choice(code)
        filename+=s
        #print(filename)
        # 创建文件
        with open(filename,'w') as file:
            pass

if __name__=='__main__':
    random.seed(time.time())
    create_filename(r'E:\斗鱼视频\直播数据\2')

批量创建文件夹 p161

import os
import os.path

def create_dir(newdir,num):
    if num<=0 or type(num)!=type(1):
        print('输入的个数不符合规范,程序终止退出')
        return

    if os.path.exists(newdir)==False:
        os.makedirs(newdir)

    raw_work_path=os.getcwd()
    print('原工作目录:',raw_work_path)
    os.chdir(newdir)
    print('现工作目录:',os.getcwd())

    for i in range(1,num+1):
        if os.path.exists(str(i))==False:
            os.mkdir(str(i))

    os.chdir(raw_work_path)

if __name__=='__main__':
    create_dir('E:\斗鱼视频\直播数据',5)
    print('文件创建完成')
    print('当前工作路径:',os.getcwd())

实战二 记录登录日志并查看 p162

import time
import os
import os.path


user_dict={'admin':'admin'}

if __name__=='__main__':
    agent_input = input('请输入用户名:')
    password_input = input('请输入密码:')

    res = user_dict.get(agent_input)
    if res == None or res != password_input:
        print('用户名或密码不正确')
    else:
        print('登录成功')
        with open('log.txt', 'a+', encoding='UTF-8') as file:
            login_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
            print(login_time)
            file.write('用户名:{0},登录时间:{1}\n'.format(agent_input,login_time))

        while True:
            print('输入提示数字,执行相应操作:0.退出 1.查看登录日志')
            op_num=eval(input('请输入操作数字:'))
            match op_num:
                case 0:
                    print('退出成功')
                    break
                case 1:
                    print('查看登录日志')
                    with open('log.txt', 'r+', encoding='UTF-8') as file:
                        print(file.read())
                case _:
                    print('输入的数字有误,请重新输入')

没什么好补充的,注意复杂操作的函数封装

实战四 模拟淘宝自动回复 p163

import os
import os.path

item_lst=[
    '订单|若您有任何订单问题...',
    '物流|若您有任何物流问题...',
    '账户|若您有任何账户问题...',
    '支付|若您有任何支付问题...'
]
if __name__=='__main__':
    with open('replay.txt','r',encoding='UTF-8') as file:
        lst=file.readlines()

    keyword_lst=[]
    match_flag=False

    for item in lst:
        keyword_lst.append(item[0:2])
    print(keyword_lst)

    ans=input('HI,xxx你好,小蜜在此等主人很久了,有什么烦恼快和小蜜说说吧~')

    while True:
        if ans=='bye':
            print('小主再见')
            break

        for i in range(len(keyword_lst)):
            if keyword_lst[i] in ans:
                print(lst[i][3:])
                match_flag=True

        if match_flag==False:
            ans=input('不知道,推出请输入bye')
        else:
            ans=input('还可以问,推出请输入bye')

没有注意函数的提取
还有一个是readline函数的使用

改善之后:

import os
import os.path

def get_reply(question):
    with open('replay.txt', 'r', encoding='UTF-8') as file:
        s=file.readline()
        while s!='':
            lst=s.split('|')
            keyword=lst[0]
            reply=lst[1]
            print(keyword)
            print(reply)
            if reply in question:
                return reply
            s = file.readline()
    return False

if __name__=='__main__':
    ans=input('HI,xxx你好,小蜜在此等主人很久了,有什么烦恼快和小蜜说说吧~')
    while True:
        if ans=='bye':
            print('小主再见')
            break

        reply=get_reply(ans)
        if reply==False
            ans=input('不知道,推出请输入bye')
        else:
            print(reply)
            ans=input('还可以问,推出请输入bye')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1381616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苍穹外卖学习----出错记录

1.微信开发者工具遇到的问题&#xff1a; 1.1appid消失报错&#xff1a; {errMsg: login:fail 系统错误,错误码:41002,appid missing [20240112 16:44:02][undefined]} 1.2解决方式&#xff1a; appid可在微信开发者官网 登录账号后在开发栏 找到 复制后按以下步骤粘贴即…

android自定义来电秀UI

简单来电秀功能&#xff0c;效果如图&#xff1a; 底部附上demo 一、新建一个PhoneCallService服务&#xff0c;在服务中监听来电等状态&#xff0c;且控制UI显示 public class PhoneCallService extends InCallService {private final Call.Callback callback new Call.Ca…

调试(c语言)

前言&#xff1a; 我们在写程序的时候可能多多少少都会出现一些bug&#xff0c;使我们的程序不能正常运行&#xff0c;所以为了更快更好的找到并修复bug&#xff0c;使这些问题迎刃而解&#xff0c;学习好如何调试代码是每个学习编程的人所必备的技能。 1. 什么是bug&#xf…

vue3hooks的使用

在 Vue 3 中&#xff0c;hooks 是用于封装组件逻辑的方法&#xff0c;类似于 Vue 2 中的 mixins。 使用 Hooks 可以提高代码的可维护性、可读性、可复用性和可测试性&#xff0c;降低代码之间的耦合度&#xff0c;使得组件的状态更加可控和可预测。 要使用 hooks&#xff0c;…

数据安全保障的具体措施有哪些

随着信息化时代的到来&#xff0c;数据已经成为企业和社会发展的重要资产。然而&#xff0c;数据安全问题也日益突出&#xff0c;如何保障数据的安全性、完整性和可用性成为了亟待解决的问题。以下将详细探讨数据安全保障的各个方面&#xff0c;以期为企业和社会提供更好的数据…

法律领域AI新突破:Alpha合同审查GPT助力法律效率革新

随着人工智能的发展&#xff0c;众多律师正在智能化工具的帮助下快速提高自身业务处理能力。Alpha系统新推出的合同审查GPT功能&#xff0c;作为法律界AI应用的新选择&#xff0c;已经在法律实践中展现了效率与智能的双重优势。 在日益激烈的市场竞争中&#xff0c;律师需要的…

Java项目:03 基于Springboot的销售培训考评管理系统

项目介绍 企业的销售要进行培训&#xff0c;由技术人员进行辅导并考评检测培训效果&#xff0c;所以有了这个小系统。实现了系统的登录验证、请求拦截验证、基础模块&#xff08;用户管理、角色管理、销售管理&#xff09;、业务模块&#xff08;评分管理、评分结果&#xff0…

ubuntu安装mysql(tar.xz)

0:本机Ubuntu的版本为 腾讯云 18.04 1&#xff1a;下载地址 MySQL &#xff1a;&#xff1a; 下载 MySQL 社区服务器 2&#xff1a;上传文件到服务器 3:解压 sudo sumv mysql-8.2.0-linux-glibc2.17-x86_64-minimal.tar.xz /usrtar -xvf mysql-8.2.0-linux-glibc2.17-x86_6…

Vue2.脚手架

全局安装&#xff1a;npm i vue/cli -g检查是否成功安装&#xff1a;vue --version新建项目&#xff1a;vue create 项目名 通过nodejs安装的时候&#xff0c;可以直接代理和仓库&#xff0c;~/.npmrc文件内容如下&#xff1a; proxysocks5://127.0.0.1:7897 registryhttps:/…

软件测试|使用Python抓取百度新闻的页面内容

简介 作为技术工程师&#xff0c;在繁忙的工作中我们不一定有时间浏览发生的热点新闻&#xff0c;但是懂技术的我们不需要访问网站来看当下发生的大事&#xff0c;我们可以使用网络爬虫的技术来获取当下最新最热的新闻&#xff0c;本文就来介绍一下使用Python抓取一下百度新闻…

【动态规划】【滑动窗口】C++算法:3003 执行操作后的最大分割数量

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 C算法&#xff1a;滑动窗口总结 动态规划 LeetCode3003 执行操作后的最大分割数量 给你一个下标从 0 开始的字符串 s 和一个整数 k。 你需要执行以下分割操作&#xff0c;直到字符串 s 变为 空&#xff1…

[情商-11]:人际交流的心理架构与需求层次模型

目录 前言&#xff1a; 一、心理架构 1.1 个体生理层 1.2 个体心理层 1.3 点对点人际交流层 1.4 社会网络层 1.5 社会价值层 二、人的需求层次模型 2.1 需求&#xff08;欲望&#xff09;层次模型 2.2 基因与人需求之间的关系 2.3 个体生理需求 2.4 个体的心理需求…

kylin4.0.3升级问题

话接前文&#xff1a; kylin升级(3.0.1-&#xff1e;kylin-4.0.3)-CSDN博客文章浏览阅读941次&#xff0c;点赞29次&#xff0c;收藏12次。原本的cube太多了&#xff0c;换其他OLAP数据库太麻烦。相比之下&#xff0c;升级是一个很好的选择&#xff08;官网有说明内存降低和构…

计算机毕业设计 基于Java的综合小区管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Java反转单链表

/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ //核心思想&#xff0c;利用cur和Curnex…

网络安全B模块(笔记详解)- MYSQL信息收集

MYSQL信息收集 1.通过渗透机场景Kali中的渗透测试工具对服务器场景MySQL03进行服务信息扫描渗透测试(使用工具Nmap,使用必须要使用的参数),并将该操作显示结果中数据库版本信息作为Flag提交; Flag:MySQL 5.5.12 2.通过渗透机场景Kali中的渗透测试工具对服务器场景MySQL0…

RK3568驱动指南|第十二篇 GPIO子系统-第136章 实战:实现动态切换引脚复用功能

瑞芯微RK3568芯片是一款定位中高端的通用型SOC&#xff0c;采用22nm制程工艺&#xff0c;搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码&#xff0c;支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU&#xff0c;可用于轻量级人工…

C语言天花板——指针(进阶3)

篇接上文(http://t.csdnimg.cn/Tl42h)&#xff0c;今天我们来讲一些有趣的关于指针的问题&#x1f6a2;&#x1f6a2;&#x1f6a2; 首先我们来看个代码&#xff1a; int main() {//一维数组int a[] { 1,2,3,4 };//4个元素&#xff0c;每个元素使int类型(4个字节)printf(&qu…

【LeetCode】24. 两两交换链表中的节点(中等)——代码随想录算法训练营Day04

题目链接&#xff1a;24. 两两交换链表中的节点 题目描述 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1…

基于JAVA的民宿预定管理系统 开源项目

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用例设计2.2 功能设计2.2.1 租客角色2.2.2 房主角色2.2.3 系统管理员角色 三、系统展示四、核心代码4.1 查询民宿4.2 新增民宿4.3 新增民宿评价4.4 查询留言4.5 新增民宿订单 五、免责说明 一、摘要 1.1 项目介绍 基于…