basicPython-4

Python basic Python basic, 最成熟稳定的Python 2.7于2010年发布, 被TIOBE评为2010年度编程语言 立即下载

文件操作基础知识

"""文件操作(基础知识)"""
import os

# 当前py文件的上一层目录
path_basic = os.path.abspath("")

# 1.打开和关闭文件
"""
f = open(r"文件地址", mode='rt', encoding='utf-8')
res = f.read()
print(res)
f.close()
del res
"""

"""
若使用 with 实现打开文件的操作,在执行完程序后,将会自动关闭被打开的系统文件
同时,这种方法还能实现同时打开多个文件的操作
"""
# # 2.同时打开两个文件
# with open(fr'{path_basic}\userDate.txt', mode='rt', encoding='utf-8') as f1, \
#         open(fr'{path_basic}\b.txt', mode='rt', encoding='utf-8') as f2:
#     x1 = f1.read()
#     x2 = f2.read()
#     print(x1)
#     print(x2)
#
# # 3.读取文件数据
# with open(fr'{path_basic}\userDate.txt', mode='rt', encoding='utf-8') as f1:
#     address = input('请输入文件路径>>>').strip()
#     content = open(fr'{address}', mode='rt', encoding='utf-8')
#
# print('第1次读'.center(80, '-'))
# bobo_1 = content.read()
# print(bobo_1)
#
# print('第2次读'.center(80, '-'))
# bobo_2 = content.read()
# print(bobo_2)

"""
补充:
(1)
r   只read
w   只write
userDate.txt   只能写但不能读(append),追加写,(写是追加在原有文件内容的末尾)
(2)
t是文本类
b是图片视频类
"""

# 4.指针移动:
"""
f.seek(offset, whence)---f 指的是需要操作的文件对象
参数:
offset: 将光标向前移动n个位置
whence: 参考位置,一般参数为0,1,2
0 :将开头作为参考位置
1 :将当前作为参考位置
2 :将末尾作为参考位置

seek(offset, whence)方法用于移动文件读取指针到指定位置
参数说明>>>
offset --- 开始的偏移量,也就是代表需要移动偏移的字节数
whence --- 可选,默认值为 0。
给offset参数一个定义,表示要从哪个位置开始偏移:
0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
"""
with open(fr'{path_basic}\a.txt', mode='rb') as f:
    f.seek(0, 0)
    print(f.tell())  # tell()方法返回文件的当前位置,即文件指针当前位置

实现文件的修改

"""修改文件"""
import os

# 当前py文件的上一层目录
path_basic = os.path.abspath("")

"""
方式一(文本编辑器修改文件的方式)
优点:修改方便,修改快捷(吸引用户) 
缺点:费内存...
"""

# 打开要修改的文件,导入信息到内存里面
with open(fr'{path_basic}\document_1.txt', mode='rt', encoding='utf-8') as f1:
    # 将硬盘里的信息"全部"导入内存,费内存
    infomation = f1.read()

    # 将内存的信息变成列表
    p = list(infomation)

    # 向列表里面插入新内容
    p.insert(3, '不')

    # 将"修改完的列表"的信息转为"非列表格式"
    new_infomation = "".join(p)

# 再次打开原文件,此时,由于是w模式,因此,它打开的那一瞬间会清空原文件里面的数据
# 因为我们已将原文件的数据存储到了内存中,而且修改后的数据也储存到了内存中,因此不用担心数据丢失
with open(fr'{path_basic}\document_1.txt', mode='wt', encoding='utf-8') as f1:
    # 将内存中的new_infomation信息写入到硬盘里面
    f1.write(new_infomation)

"""
方式二
将A文件的数据 + 需要修改的数据---> 放到B文件中,
将A文件删除,同时B文件改名为A文件
"""

# 同时打开两个文件,一个"呼出"数据,同时另一个"吸收"数据,过程中若需要的话,可对数据进行一定的修改
with open(fr'{path_basic}\document_2.txt', mode='rt', encoding='utf-8') as f1:
    with open(fr'{path_basic}\document_2(副本).txt', mode='wt', encoding='utf-8') as f2:
        # 每次只从硬盘里面读一行,这样占用的内存就少了,但是速度就慢了
        for line in f1:
            # replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),
            # 如果指定第三个参数max,则替换不超过 max 次
            new_line = line.replace('一天', '一年')
            f2.write(new_line)

# 删旧改新
os.remove(fr'{path_basic}\document_2.txt')
os.rename(fr'{path_basic}\document_2(副本).txt', fr'{path_basic}\document_2.txt')

实现文件的复制

# t模式下的————Copy功能

# old_path = input('请输入原文件路径>>>').strip()
# new_path = input('请输入新文件路径》>>>').strip()
# with open(fr'{old_path}', mode='rt', encoding='utf-8') as f1,\
#     open(fr'{new_path}', mode='wt', encoding='utf-8') as f2:
#     res = f1.read()
#     f2.write(res)

# b模式下的————Copy功能   (瑕疵版)

# old_path = input('请输入原文件路径>>>').strip()
# new_path = input('请输入新文件路径》>>>').strip()
# with open(fr'{old_path}', mode='rb') as f1,\
#     open(fr'{new_path}', mode='wb') as f2:
#     for line in f1:
#         f2.write(line)
#

# b模式下的————Copy功能   (改良版)
old_path = input('请输入原文件路径>>>').strip()
new_path = input('请输入新文件路径》>>>').strip()
with open(fr'{old_path}', mode='rb') as f1, \
        open(fr'{new_path}', mode='wb') as f2:
    while 1:
        res = f1.read(1024)  # 每次读取字节数,这样做可以控制--单次输入量!相对减少运行负荷。
        # 补充说明:if 后面的内容只有为ture时,才执行 if 语句!
        if not res:  # 等价于 len(res) == 0
            break
        f2.write(res)

统计文件的字符数量

import os

"""统计文件的字符数量"""

# 被统计的文件目录
p = os.path.abspath("")
path = p + r"\date.txt"

with open(path, mode='rt', encoding='utf-8') as f:
    # sum()里面处理的对象为一个可迭代的对象, 如列表、生成器等。
    generator = (len(line) for line in f)
    result = sum(generator)
    print(result)
"""
补充说明:

以上是统计文件字符数量的最终方案,也是效率最高,最节省计算机资源的方案!
sum()里面的这个整体 (  len(line) for line in f  ) 不是元组生成式!因为元组不可变。
它是生成器表达式,它本身没有任何值的,只有next它的时候,它才产生一个值。
生成器其实是自定义的迭代器!
"""

案例演示(一)

目标:模块化实现注册与登录校验功能,要求数据存入文件中。

具体实现:如下

文件名: smallTools.py

"""辅助工具"""


# 判断"目标字符串"是否存在于文件中
def exist(string, filePath):
    with open(fr"{filePath}", "rt", encoding="utf-8") as f1:
        for line in f1:
            n, p = line.split(":")
            if string == n:
                return True
        return False


# 判断"用户信息"是否匹配
def matching(name, password, filePath):
    with open(fr"{filePath}", "rt", encoding="utf-8") as f1:
        for line in f1:
            n, p = line.strip("\n").split(":")
            if name == n and password == p:
                return True
        return False

文件名: register.py

from smallTools import exist


def registration(path):
    # >获取用户名和密码
    print("注册界面".center(12, "*"))

    # >>用户名获取和确认
    while True:
        name = input("用户名>>>").strip()
        if not exist(name, path):
            break
        print("用户名已存在!")

    # >>密码获取和确认
    while True:
        password_1 = input("设置密码>>>").strip()
        password_2 = input("确认密码>>>").strip()
        if password_2 == password_1:
            break
        print("两次密码不一致,请重新设置密码!")

    # >拼接用户信息
    info = "{}:{}\n".format(name, password_2)

    # >存储用户名和密码
    with open(path, mode="at", encoding="utf-8") as f1:
        f1.write(info)

    # >提示
    print("注册成功!")

文件名: login.py

from smallTools import matching


def login(path):
    print("登录界面")

    # >获取用户信息
    name = input("请输入账号>>>").strip()
    password = input("请输入密码>>>").strip()

    # >信息匹配
    if matching(name, password, path):
        print("登录成功!")
        return None
    print("登录失败,账号或密码错误!")

文件名: run.py

import os
from register import registration
from login import login

# 用户数据文件地址
p = os.path.abspath("")
path = p + r"\userDate.txt"

"""登录系统入口"""
while True:
    print()
    print("欢迎来到注册登录系统".center(15, "*"))
    print("0.退出".center(22, "*"))
    print("1.前往注册".center(20, "*"))
    print("2.前往登录".center(20, "*"))

    s = input("\n请输入功能序号>>>").strip()

    if s == "0":
        break
    if s == "1":
        registration(path)
    if s == "2":
        login(path)

案例演示(二)

目标:运行"用户充值"程序,然后运行"日志监控"程序查看用户的充值情况

具体实现:如下

文件名: userRecharge.py

"""用户充值"""

import os
import time

# log日志文件目录
p = os.path.abspath("")
path = p + r"\user.log"

while True:
    money = input("请输入您想要充值的金额:").strip()
    with open(path, mode='at', encoding='utf-8') as f:
        f.write(f"%s,小明成功充值了{money}元\n" % time.strftime('%x %X %A'))

文件名: monitor.py

"""日志监控"""

import os
import time

# log日志文件目录
p = os.path.abspath("")
path = p + r"\user.log"

with open(path, mode='rb') as f:
    # 控制文件指针跳到末尾
    f.seek(0, 2)

    # 一直循环,取最后一行的信息
    while True:
        line = f.readline().decode('utf-8')
        if line:
            print(line, end='')
        time.sleep(1)
Python库 | basicTools-0.0.9-py3-none-any.whl 资源分类:Python库 所属语言:Python 资源全名:basicTools-0.0.9-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.youkuaiyun.com/article/details/101784059 立即下载

相关推荐

深入解析DDR5 SDRAM的ODT模式:时序图与状态表实战指南

本文深入解析了DDR5 SDRAM的ODT模式,详细阐述了其五种工作状态及其在读写操作中的动态切换逻辑。通过解读JESD79-5标准中的时序图与状态表,并结合模式寄存器配置实战,为硬件工程师和爱好者提供了优化信号完整性、提升系统稳定性的关键指南。

gpu4optimizer的博客 699

basic和python_Python basic 总结

标签:作者:Vamei 出处:http://www.cnblogs.com/vamei之前提到一句话: everything is object, 下面我们局深入体验一下这句话需要先介绍两个内置函数, dir(), help()dir() 用来查询一个类活或者对象所有的属性,>>> print dir(list)help() 用来查询说明文档>>> print ...

weixin_39789399的博客 480

Python pydub实现语音停顿切分

将pcm文件批量处理成wav文件 import wave import os filepath = "data/" # 添加路径 filename = os.listdir(filepath) # 得到文件夹下的所有文件名称 #f = wave.open(filepath + filename[1], 'rb') #print(filename) for i in range(len(fi...

wangqianqianya的博客 1万+

Python手册(Python Basics)--Python基础

Python 是一种易于学习又功能强大的编程语言。它提供了高效的高层次的数据结构,还有简单有效的面向对象编程。Python 优雅的语法和动态类型,以及解释型语言的本质,使它成为在很多领域多数平台上写脚本和快速开发应用的理想语言。

WilenWu 1万+

喷雾破碎模型解析:从理论到CFD应用实践

本文深入解析喷雾破碎模型的理论基础与CFD应用实践,重点介绍KHRT、TAB和ETAB等主流模型的核心原理与工程调参技巧。通过OpenFOAM实例演示和参数优化建议,帮助工程师精准预测液滴破碎行为,提升燃烧效率与排放控制性能,适用于汽车发动机、燃气轮机等工业场景。

weixin_29281915的博客 499

AWSIM模拟器 新增多相机

本文介绍了基于Unity6引擎对AWSIM自动驾驶模拟器的优化方案,主要针对多相机系统的扩展实现。作者通过修改EgoVehicle.cs和AutowareSimulationDemo.cs核心代码,将原单相机系统升级为5相机配置。关键技术点包括:1)使用List容器管理多个CameraSensor组件;2)完善相机初始化流程;3)配置5个相机UI显示窗口;4)修改ROS话题设置。优化后的系统可支持BEVFusion等多传感器融合算法的测试验证,为Autoware.universe 0.45.0及以上版本提供

W805698955的博客 831

编程语言python怎么读-Python入门学习的计算机程序设计语言是怎样的?

原标题:Python入门学习的计算机程序设计语言是怎样的?你可能已经听说过很多种流行编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Java语言。那么,关于Python你又有哪些了解呢?完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。用Python完成项目,编写的代码量更少,代码简短可读性强,团队协...

q6q6q的专栏 495

[官方培训]22-UE资产优化 Epic 肖月 笔记

Nanite+Lumen目标:面向TA,美术,不影响视觉的前提下,优化运行和编辑效率引擎:UE5.1延迟管线平台:主流PC,Windows 10 with DX12。

Tcohneyn的博客 1574

basicPython-1

元组、列表、字典、集合、字符串、格式化输出、循环语句、生成式、异常处理

因为热爱,所以坚持。 833

LLaVA-1.5:多模态视觉问答新突破

LLaVA-1.5在多模态视觉问答(VQA)任务中取得了显著进展,主要得益于视觉-语言连接器的优化和特定任务数据集的增加。通过将连接器升级为两层MLP,模型在处理视觉与语言关系时表现更佳。同时,引入如OKVQA、OCRVQA等数据集,增强了模型在复杂视觉推理任务中的能力。在11个基准测试中,LLaVA-1.5超越了现有方法,展示了其强大的多模态能力。此外,模型通过提升输入图像分辨率、扩展语言模型和改进多语言能力,进一步提升了性能。尽管在短格式回答任务中初期表现不佳,但通过调整提示格式和微调,其性能显著提升

weixin_57060548的博客 945

86 arduino 电机yl_(八)arduino入门:直流电机控制

一、本节介绍在本实验中,您将学习如何使用驱动芯片L293D和SunFounder Uno板控制小型直流(DC)电机的方向和速度。为了使初学者更容易,我们将让直流电机左右旋转,自动加速和减速。二、材料准备1 *小型直流电机1 * L293D1 * Arduino Uno板1 *面包板1 * USB数据线杜邦线三、原理讲解L293D这是一个非常实用的芯片,可以独立控制两台直流电机。在这个实验中,只有一...

weixin_29163857的博客 3567

Python Basic

1、python的优缺点 python的优点: 1)提供了一个非常完善的基础代码库,可直接调用,覆盖了网络、文件、GUI、数据库、文本等大量内容,被称为“内置电池”。 2)除了内置库外,python还有大量的第三方库,也就是别人开发的东西可直接拿来使用。用Python开发,许多功能不必从零编写,直接使用现成的即可。 python的缺点: 1)运行速度非常慢,因为python是解释型语言,...

wwwsssZheRen的博客 1086

Pinocchio 快速详细入门教程 —— 开源机器人运动学动力学库

本文介绍了机器人学中的数字机器人学、正逆运动学、动力学仿真与控制、最优控制等核心主题,以及Pinocchio库的应用。内容包括: 数字机器人学:通过UR5机器人模型演示了构型空间采样、碰撞检测、路径规划等基础操作,使用优化方法在约束条件下寻找有效构型。 运动学:详细讲解了二维和三维机器人的正运动学(构型到末端位置)和逆运动学(目标位置到构型),包括串联机械臂和并联机器人的处理。 动力学与控制:介绍了动力学仿真(如自由落体、摩擦效应)、PD控制、计算扭矩控制,以及接触仿真(碰撞检测与处理)。 最优控制:以独轮

机器人控制与仿真应用 2883

basicPython-2

普通函数、生成器、迭代器、递归函数、匿名函数、装饰器、记忆函数

因为热爱,所以坚持。 515

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

basicPython-3

类和对象、继承、多态、反射、元类、单例模式

因为热爱,所以坚持。 801

计算机控制技术及应用

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

basicPython-5

常用的模块 (module)

因为热爱,所以坚持。 701

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

basicpython-6

自制模块、案例展示

因为热爱,所以坚持。 513

basicPython-7

软件开发目录规范

因为热爱,所以坚持。 440

Python Basic - Python格式化输出

目录功能解释代码示例常见格式化占位符 功能解释 一句话概括:数据更美观,更易懂 有时候需要将特定的数据,按照人更友好的格式进行输出,便于查看或存储,例如,需要指定输出某个人的信息,如,姓名,年龄,公司,部门,职位,工资等信息,按照特定的格式输出后更易读取。 代码示例 [root@Private python-script]# cat formatout.py #!/usr/local/bin/py...

HuangFei 188

Python Basic基础知识

List 换行打印list #方法1 for i in temp_list: print(i) #方法2 print("\n".join(i for i in temp_list))

njfuahui的专栏 451

“Python,就是新的 BASIC!”

【优快云 编者按】在编程语言的长河中,BASIC 曾经扮演了至关重要的角色,它让无数初学者迈出了编程的第一步。随着时代的变迁和技术的进步,另一种编程语言逐渐崛起,并以其易用性和广泛的应用领域,成为新一代程序员和非专业开发者的首选——这就是 Python。原文链接:https://log.schemescape.com/posts/programming-languages/python-as-a...

优快云资讯 8060

Python----Basic

官网下载: https://www.python.org/downloads/Python 的设计目标 一门简单直观的语言并与主要竞争者一样强大 开源, 以便任何人都可以为它做贡献 代码像纯英语那样容易理解 适用于短期开发的日常任务 Python 的设计哲学:优雅,明确,简单Python 开发者的哲学是:用一种方法,最好是只有一种方法来做一件事特色完全是面向对象的语言 函数,模块,数字,字符串都是对

Damys 372

Python - Basic

Python - Basic

xdxd2333的博客 175

孙立岩 python-basic: 用于学习python基础的课件(161718)

面向对象 python语言是一种面向对象的语言,类的定义和使用都比较简单,未来的这段时间,大家读别人的代码,遇到类的定义和使用的机会应该是比较多的。类的定义和使用的规则如下: #定义一个类 class People: #私有变量的名称前有两个下划线,共有成员没有,函数也一样,以下划线来区分是否是私有的。 name='null' is_man=None __age=-1 __weight=-1 #每一个成员函数都需要一个self参数,self同java中的this指针,代表的是调用这个函数的

wangprince2017 847

PythonBasic

PythonBasic PythonBasic Python程序的组成 程序由模块组成 模块由语句、函数、类、数据等组成 语句包含表达式 表达式建立并处理数据对象 Python运行 1、python3 hello.py 2、(前提:文件内加上#! /usr/bin/python3) chomd u+x hello.py 之后用 ./hello.py Python的交互提示模式...

haoen110的博客 2445
上一篇: basicPython-3
下一篇: basicPython-5
code_stream
博客等级 码龄4年 1238粉丝 169原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值