第11章 2 文件和io操作 +

Python 文件 IO 操作详解 Python 文件 IO 操作详解1、文件 IO 常用操作2、文件打开操作2.1 打开命令2.2 命令参数2.2.1 路径2.2.2 mode2.2.3 buffering 缓冲区2.2.4 encoding 编码,仅文本模式使用2.2.5 errors2.2.6 newline2.2.7 closefd3、文件其他命令3.1 read3.2 write3.3 close3.4 其它命令4、文件指针5、上下文管理6、其它课堂笔记(描述不尽准确) 1、文件 IO 常用操作 2、文件打开操作 2.1 打开命令 阅读详情

本章总结和章节选择题 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')
JAVA:文件IO操作 此处谈到的文件本身有多种含义.狭义的文件:特指硬盘上的文件(以及保存文件的目录).,在操作系统中,都会被视为是在一个电脑上,有很多文件都是需要依靠操作系统,进行组织管理的.这一串目录结构,就描述了文件所在的位置,构成了完整的路径中,就约定使用分隔符,分隔目录和目录:绝大部分系统使用来作为目录分隔符,只有windows既能使用"/"也能使用"\"."/"在编程的时候好处理,"\"在字符串里,必须通过转义字符"\\"来表示; 阅读详情

相关推荐

Petalinux 2021.2 下 Qt组件编译报错?手把手教你修改bb文件搞定qt3d/qtquickcontrols2

本文详细解析了Petalinux 2021.2环境下Qt组件(如qt3d、qtquickcontrols2)编译报错的解决方案。通过修改bb文件或使用bbappend文件覆盖,有效解决`petalinux-build --sdk`命令执行时的源码获取失败或哈希校验不匹配问题,并提供验证与调试技巧,帮助开发者快速修复构建流程中断问题。

weixin_29188997的博客 214

Java11 文件操作和io流

java.io.File 类是java提供的针对磁盘中文件和目录对象的一个类。如果进行序列化和反序列化的时候类文件不能保持一致,写一个静态常量serialVersionUID。2.序列化对象的成员变量也一定要实现可序列化,实现Serializable接口。3.反序列化类文件信息要和序列化保持一致,不然会抛出异常。操作的最小单元:byte-----包含音频视频图片等。BufferedInputStream类。ObjectOutputStream类。ObjectInputStream类。

Stringzhua的博客 947

Silvaco Athena实战:从零搭建MOSFET工艺仿真流程(附mos1ex03完整代码解析)

本文详细介绍了使用Silvaco Athena从零搭建MOSFET工艺仿真的全流程,包括环境配置、核心工艺步骤、器件成型及参数提取等关键环节。通过mos1ex03案例的完整代码解析,帮助读者掌握网格划分、氧化层生长、离子注入等实战技巧,提升半导体工艺仿真能力。

weixin_42648844的博客 406

IO操作(标准IO和文件IO)

使用 fprintf 和 fscanf 完成注册和登录功能,要求做个小菜单,三个功能,功能1是注册,用户输入账号和密码后,将其存放到外部文件中;功能2是登录,用户输入登录账号和密码后,如果跟文件中匹配,则提示登陆成功,如果全部不匹配,则提示登录失败;​ 当内核提供的函数出错后,内核空间会向用户空间反馈一个错误信息,由于错误信息比较多也比较复杂,系统就给每种不同的错误信息起了一个编号,用一个整数表示,这个整数就是错误码。当输出数据中包含换行符时,缓冲区会立即刷新,将数据写入目标设备(如终端或文件)。

Ye1l0vv的博客 1117

Labview调用C++ dll之字符串数组传递

做项目的时候碰到了一个需求,有一个复杂的运算,用labview实现非常的麻烦,但是如果用C++实现,就会灵活很多。尝试着采用Labview调用C++编写的动态链接库方式解决,兼顾Labview的便利和C++的灵活性。 运算好说,主要难点是Labview与C++之间的数据对应关系,因为我最后的结果是既有字符串又有数字,对于单纯的数字来说,直接通过调用数组的方式就能解决,这里主要记录一下字符串数组...

bgbgx的博客 6806

ROS2 Nav2实战:解决rviz2显示no map received的3种实用方法(附详细步骤)

本文针对ROS2 Nav2导航栈中rviz2显示“no map received”的常见问题,提供了三种核心解决方案。深入剖析了问题根源在于ROS2生命周期节点管理、QoS策略不匹配及坐标系设置错误,并分别通过手动配置流程、集成生命周期管理器以及调优QoS策略与固化rviz2配置,给出了详细的实战步骤,确保地图数据可靠显示。

j0k1l2m3n的博客 421

第11章 1 文件及IO操作

什么是文件?存储在计算机的存储设备中的一组数据序列就是文件不同类型的文件通过后缀名进行区分文本文件:编码格式不同,所占磁盘空间的字节数不同(比如北京你好,用gbk编码是8个字节,utf-8则需要编码为12个字节)二进制文件:没有统一的编码,文件直接由0或1组成,需要指定的软件才能打开Python操作文件的步骤:1、打开文件变量名=open(filename,mode,encoding)filename:要打开文件的完整路径mode:文件的打开模式:读还是写...

engineer0的博客 500

利用mininet模拟SDN架构并进行DDoS攻击与防御模拟(Ryu+mininet+sflow+postman)

1、知识概述 (1)软件定义网络: (2)mininet: Mininet是一个强大的网络仿真平台,通过这个平台,我们可以很方便的模拟真实环境中的网络操作与架构。特别是SDN,在真实网络中进行相关的网络实验有一定难度,自然需要一个仿真平台可以学习这种新型的网络架构,而Mininet就应运而生,承担了这个光荣而艰巨的使命。Mininet自带交换机(switchs)、主机(hosts)、控制器(controllers),同时,在mininet上可以安装OpenvSwitch、多种控制器(NOX\POX

北风 1万+

第02章 Linux的文件IO

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ILrDQZZQ-1670757752348)(https://gitee.com/embmaker/cloudimage/raw/master/img/image-20221011153558802.png)]打开文件都是向文件添加数据,就是以a+方式打开,用ftell函数直接得到当前位置,如果不为0,则说明文件不为空;只要用"a”方式打开,那么无论用fseek位置指针定位函数,在写入文件信息时,均只能写入到文件末尾。

微客猿 1183

C#构建高精度预测模型:从数据预处理到模型部署的实战指南

【代码】C#构建高精度预测模型:从数据预处理到模型部署的实战指南。

墨夶的博客 1260

全网最全-DA14531-全球最小-BLE从入门到精通开发教程

本教程主要适用于低功耗产品,DA14531它体积小,非常适用于对体积敏感的设备,如无线可穿戴、传感器、助听器等设备。本文经过作者发大量时间来记录开发项目的调试方法,里面有许多笔者开发心得体会,旨在让读者工程师快速上手,减少摸索时间,提高软件质量。读者对象本文档主要适用以下工程师:嵌入式系统工程师单片机软件工程师IOT固件工程师BLE固件工程师。

hejinwu1314的博客 5137

文件操作---文件IO与标准IO

文件操作---文件IO与标准IO

weixin_56459724的博客 1099

【ARM Trace32(劳特巴赫) 高级篇 20 -- SNOOPer 使用介绍】

在 Lauterbach TRACE32 调试系统中,Snooper是一种特殊的监视工具,它能够在不中断处理器执行的情况下监视和记录特定内存地址的数据变化。这对于系统级调试、性能分析、数据流监视以及实时系统的问题追踪特别有用,尤其是在无法使用中断的情况下。当你设置了一个或多个Snooper时,TRACE32 硬件将不断地监视指定的内存地址,一旦发生了读写操作,就会将相关信息记录下来。这样你就可以看到某个地址的数据是什么时候以及如何被修改的,而不会影响目标系统的运行。

CodingCos的博客 2763

Java 文件操作 和 IO(2)-- Java文件系统操作

java中操作文件,主要是通过java标准库提供的一系列的类,而这些类,又可以分为两种操作方向:文件系统操作这里主要是关于 文件 或 目录 的创建,文件的删除,文件的重命名,创建目录等…文件内容操作这里就是对某一个具体的文件的内容进行读和写了,又由于文件有两种种类,所以,我们又区分了字节流操作和字符流操作。(1)字节流:读写文件,以字节为单位,是针对二进制文件使用的。(2)字符流:读写文件,以字符为单位,是针对文本文件使用的。这篇博客里面,讲的是文件系统操作,关于文件内容操作,将在。

2301_80934700的博客 1219

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java 文件操作与IO流

介绍 Java 如何进行文件操作以及IO 流的使用

熵减玩家 4709

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【c ++ primer 笔记】第8章 IO库

🎉作者简介👓博主在读机器人研究生,目前研一。对计算机后端感兴趣,喜欢c++,go,python,目前熟悉c++,go语言,数据库,网络编程,了解分布式等相关内容📃个人主页🔎支持👍就是给予我最大的支持!🎁💛本文摘要💛。......

小呆鸟blog 1153

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

第11章、IO

第11章、IO Java中I/O操作主要是指使用Java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做写出数据。 11.1、File类 1、概述 java.io.File类:文件和文件目录路径的抽象表示形式,与平台无关; File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 2、构造方法 public File(String pathname) 相对路径 绝对路径 public File(St

LinYuan 173

第11章-文件与IO

本章学习C#中的文件和I/O操作,掌握File、Directory、Path等常用类的使用,理解流(Stream)的概念,学会读写文本文件和二进制文件,掌握using语句和资源管理,为处理文件系统操作奠定基础。

qq_31762031的博客 626

【C++】C++11线程库 和 C++IO流

C++11线程库,原子操作,unique_lock,条件变量,C++标准IO,文件IO,字符串IO…

The porters of knowledge 1552

IO流复制文件11种方法

java IO流复制文件11种方法

Yan_yuhan的博客 4936

【Linux文件IO】系统IO中API描述和基本使用

quad对文件的操作,除了最基本的打开、关闭、读、写、定位之外,还有很多特殊的情况,比如用于沟通应用层与底层驱动之间的ioctl、万能工具箱fcntl、内存映射mmap等等,熟练使用这些API,是日常开发的必备技能。

qq_62917398的博客 1166

C# 文件IO

流就是通过通信路径传递的字节序列,而在文件操作里,主要存在两个关键的流类型:输入流与输出流。输入流负责从文件中读取数据,也就是执行读操作;输出流则承担着向文件写入数据的任务,即进行写操作。

2401_83367969的博客 1079

标准IO和文件IO

在说IO之前先补充几个常见的命令:1.od -c:按照字符编码显示文件内容,od -c filename2.find:在指定路径下查找文件名,find 路径 -name 文件名3.压缩、解压.tar.bz2文件:①压缩:tar -jcvf 文件名 .tar.bz2 文件夹 /*②解压:tar -jxvf 文件名 .tar.bz24.du:获得指定目录下文件的大小,du -k文件夹(按照kb获取大小);du -m 文件夹(按照mb获取大小)①它是一个工程管理工具。

weixin_48609616的博客 1101

【文件操作与IO】详细解析文件操作与IO (一)

本篇博客给大家带来的是文件操作的知识点.🐎文章专栏: JavaEE初阶🚀若有问题 评论区见❤如果你不知道分享给谁,那就分享给薯条.你们的支持是我不断创作的动力 .王子,公主请阅🚀一. 什么是文件二. Java操作文件File类。

薯条不要番茄酱的博客 1621

Python——文件及IO操作

该内容介绍了 Python 文件操作基础,包括文件的打开、读写与关闭,以及不同模式如只读、写入、追加等的使用方式。通过 with 语句可实现文件自动关闭。进一步说明了数据的组织方式:一维用列表,二维用二维列表,高维常用字典结构并结合 json 模块进行存储和转换。OS 模块用于文件和目录管理,如创建、删除、重命名、遍历等操作;os.path 子模块提供路径处理方法,包括判断路径是否存在、提取文件名和后缀、拼接路径等,便于文件管理和系统交互。

2401_88868983的博客 731

《Python基础教程》第11章笔记:文件

在之前的章节中,程序与外部的交互很少,且都是通过input和print进行的。本章将更进一步,让程序能够与更大的外部世界交互:文件和流。本章介绍的函数和对象让你能够永久存储数据以及处理来自其他程序的数据。

WalkingComputer的博客 938
上一篇: 第11章 1 文件及IO操作
下一篇: 弟12章 网络编程
你板子冒烟了
博客等级 码龄8年 1278粉丝 582原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值