当前位置: 首页 > news >正文

python笔记进阶--模块、文件及IO操作(1)

目录

一.模块

1.模块的导入和使用

1.1导入整个模块

1.2导入函数

1.3使用as给模块指定别名

2.常见标准库

2.1 import random:

2.2 import math:

2.3正则表达式处理

2.4turtle

二.文件及IO操作

1.文件

1.1绝对路径与相对路径

1.2读取文件

1.2.1打开文件模式

1.2.2写入文件

1.2.3with读取文件

2.CSV文件的读取


一.模块

1.模块的导入和使用

模块

将函数存储在称之为模块的独立文件中,再将模块导入到主程序中,

import语句:允许在当前运行的程序文件中使用模块中的代码。

包是Python模块的一种组织形式,将多个模块组合在一起,形成一个大的Python工具库。包通常是一个拥有__init__.py文件的目录,它定义了包的属性和方法。

1.1导入整个模块

模块

的使用

pizza.py

def make_pizza(size,*toppings):
    print(f"The {size} topping:")
    for topping in toppings:
        print(f"---{topping}")

making_pizza.py

import pizza  #导入模块pizza.py

pizza.make_pizza(16,'sugar')
pizza.make_pizza(43,'green','sugar')

The 16 topping:

---sugar

The 43 topping:

---green

---sugar

from pizza import make_pizza 

#导入模块pizza.py中的make_pizza函数

make_pizza(16,'sugar')
make_pizza(43,'green','sugar')

的使用

my_package包中

pizza.py

from my_package import pizza

pizza.make_pizza(16,'sugar')
pizza.make_pizza(43,'green','sugar')

1.2导入函数

①导入所有函数:from pizza import *

②导入特定函数

导入model_name.py中的function_name函数from model_name import function_name
导入model_name.py中的funtion_0, funtion_1, funtion_2函数

from model_name import funtion_0, funtion_1, funtion_2

making_pizza.py

导入pizza.py中的make_pizza的函数

from pizza import make_pizza

1.3使用as给模块指定别名

例如,给模块pizza指定别名p :import pizza as p

2.常见标准库

模块

用途

os

os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。

sys

sys 模块提供了与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。

time

time 模块提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。

datetime

datetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等。

random

random 模块提供了生成随机数的函数,例如生成随机整数、浮点数、序列等。

math

math 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等。

re

re 模块提供了正则表达式处理函数,可以用于文本搜索、替换、分割等。

json

json 模块提供了 JSON 编码和解码函数,可以将 Python 对象转换为 JSON 格式,并从 JSON 格式中解析出 Python 对象。

urllib

urllib 模块提供了访问网页和处理 URL 的功能,包括下载文件、发送 POST 请求、处理 cookies 等。

2.1 import random

函数名

函数说明

randrange(start,stop,step)

start 指定范围的起始值 包含本身,默认是0;stop 指定范围的结束值不包含本身; step 步长,默认步长是1。该函数返回一个整数

randint(start,end)

返回[start end]之间的一个随机整数,start必须小于end

random()

返回一个[0.0,1.0)之间的随机小数

choice(seq)

返回一个序列(列表、元组,字符串)中返回一个随机元素

shuffle(seq)

将序列元素随机排列(打乱顺序)

2.2 import math

函数名

函数的说明

示例

math.ceil()

向上取整

math.ceil(18.1)   #19

math.floor()

向下取整

math.floor(18.1)  #18

math.sqrt

求平方根

math.sqrt(100)

2.3正则表达式处理

可以用于文本搜索、替换、分割等

模式

描述

\w

匹配字母数字及下划线

\W

匹配非字母数字下划线

\s

匹配任意空白字符,等价于\rinf].

\S

匹配任意非空字符

\d

匹配任意数字,等价于[0-9]

\D

匹配任意非数字

\A

匹配字符串开始

\Z

匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串

\z

匹配字符串结束

\G

匹配最后匹配完成的位置

\N

匹配一个换行符

\t

匹配一个制表符

A

匹配字符串的开头匹配字符串的末尾。

.

匹配任意字符,除换行符,当re.DOTALL标记被指定时,则可匹配包括换行符的任意字符。

[...]

用来表示一组字符,单独列出:[amk]匹配 "a','m"或"k"

[^...]

不在[]中的字符:[^abc]匹配除a,b,c之外的字符。

*

匹配0个或多个的表达式。

+

匹配1个或多个的表达式。

?

匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

{n}

精确匹配n个前面表达式。

{n,m}

匹配n到m次由前面的正则表达式定义的片段,贪婪方式

a|b

匹配a或b

()

匹配括号内的表达式,也表示一个组

2.4turtle

方法

说明

forward(d)/fd(d)

向当前画笔方向移动d像素长度

backward(d)/back(d)/bk(d)

向当前画笔相反方向移动d像素长度

goto(x,y)/setpos(x,y)/setposition(x,y)

将画笔移动到坐标为x,y的位置

setx(x)

设置海龟的横坐标为 x,纵坐标保持不变

sety(y)

设置海龟的纵坐标为 y,横坐标保持不变

penup()/up()

提起笔移动,不绘制图形,用于另起一个地方绘制

pendown()/down()

放下笔,移动时绘制图形,缺省时也为绘制

right(degree)/rt(degree)

顺时针移动degree°

left(degree)/lt(degree)

逆时针移动degree°

setheading(angle)/seth(angle)

设置海龟的朝向为 angle

circle(radius, extent=None, steps=None)

绘制圆弧

dot(radius,colorstr)

绘制一个指定直径和颜色的圆点

home()

设置当前画笔位置为原点,朝向东

二.文件及IO操作

1.文件

文件以计算机硬盘为载体存储在计算机上的信息集合,文件可以是文本文档、图片、程序等。

计算机文件基本上分为二种:二进制文件(没有统一的字符编码)

纯文本文件(有统一的编码,可以被看做存储在磁盘上的长字符串)

纯文本文件编码格式ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 等。

二进制文件与文本文件的一个最主要的区别在于是否有统一的字符编码格式,二进制文件顾名思义是直接由0与1组成,无统一的字符编码。如图片文件(jpg、png),视频文件(avi)等。

1.1绝对路径与相对路径

相对路径

当前工作目录来确定文件或者文件夹位置

f = open('test.txt',mode='w',encoding='utf-8')

退到上一级目录f = open('../test.txt')

绝对路径

从根目录开始到文件\文件夹为止的完整路径

path = os.getcwd() #目前文件位置

filename = path + '/test.txt'

f = open(filename,mode='r',encoding='utf-8')

1.2读取文件

打开文件

详见1.1绝对路径与相对路径

读取文件内容

读取5个字符

context = f.read(5)

读取一行

context = f.readline()

打印全部

context = f.readlines()

关闭文件

f.close()

1.2.1打开文件模式

mode

解释

r

只读【默认模式,文件必须存在,不存在则抛出异常】

w

只写,写之前会清空文件的内容,如果文件不存在,会创建新文件

a

追加,在原本内容中继续写,如果文件不存在,则会创建新文件

r+

可读可写

w+

打开一个文件用于读写。如果该文件已有则将其覆盖。如果该文件不存在,创建新文件。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

b

rb、wb、ab、rb+、wb+、ab+意义和上面一样,用于二进制文件操作

1.2.2写入文件

代码

结果

写入一行

f.write('你好,我是mia\n')

f.write('你是谁\n')

你好,我是mia

你是谁

写入若干行

f.writelines(['你好,我是mia\n',  '你是谁\n'])

a=['你好,我是mia\n',  '你是谁\n']
f.writelines(a)

context = ['你好,我是mia','你是谁']
for i in context:
    f.write(i+'\n')

输入写入

date = input('请输入今天的日期:')

f.write(date+'\n')

1.2.3with读取文件

with open('test.txt', mode='r', encoding='utf-8') as f:
    context = f.read()

2.CSV文件的读取

读取文件

with open('data.csv',mode='r',encoding='utf-8') as f:
    cf = csv.reader(f)  #将csv拆分成一个个列表

['姓名','科目','成绩']
['张蘑菇','python','99']
['王蘑菇','Java','88']

head = next(cf)  #获取表头
    scores = []
    for i in cf:
        print(i)

['张蘑菇','python','99']
['王蘑菇','Java','88']

写入

with open('data.csv',mode='w',encoding='utf-8') as f:
    cf = csv.writer(f)
    cf.writerow(['tom','c','77'])

lista = [['Bob','C++','79'],['Job','MySQL','89']]

cf.writerow(lista)

随机生成信息

from my_package import my_tools
lista = []
def random_info(n=100):
    subjects = ['python','java','C++','html']
    names = []
    for i in range(n//len(subjects)):
        name = my_tools.random_string(random.randint(3, 6))
        names.append(name)
    for i in range(n):
        subject = random.choice(subjects)
        score = random.randint(50,100)
        name = random.choice(names)
        for j in lista:
            if j[0]==name and j[1]==subject:
                break
        else:
            lista.append([name,subject,score])

相关文章:

python笔记进阶--模块、文件及IO操作(1)

目录 一.模块 1.模块的导入和使用 1.1导入整个模块 1.2导入函数 1.3使用as给模块指定别名 2.常见标准库 2.1 import random: 2.2 import math: 2.3正则表达式处理 2.4turtle 二.文件及IO操作 1.文件 1.1绝对路径与相…...

单元测试框架 Junit

目录 什么是Junit? Junit的基础注解有哪些? 什么是参数化?参数化通过哪几种方式传输数据? 单参数 多参数 CSV文件获取参数 方法获取参数 测试用例执行顺序如何控制? 什么是断言assert?Assertions类…...

数电票怎么查询真伪|发票识别接口|发票查验接口|PHP接口文档

对于财务工作者而言,发票管理是一项即繁琐又十分重要的工作,尤其是在数字化电子发票快速普及的当下,发票识别、核验、查重等工作无疑增加了财务人员的工作难度。财务人员每天都要与大量的发票打交道,人工管理模式难免会出现手动录…...

外包干了一个月,忘记Git怎么使用了...

外包干了一个月,忘记Git怎么使用了… Git 是一个流行的版本控制系统,它允许开发人员跟踪和管理代码更改。在本篇文章中,我们将介绍 Git 的配置和使用命令,以帮助您更好地理解和使用这个强大的工具。 首先,让我们开始…...

【微服务篇】深入理解微服务网关原理以及Spring Gateway

微服务网关的作用 微服务网关在微服务架构中扮演着至关重要的角色,它主要负责请求的路由、组成服务间的通信桥梁、聚合不同服务的数据以及提供跨服务的统一认证机制。以下是微服务网关的几个主要作用: 请求路由: 微服务网关充当所有入站请求的入口点&a…...

循序渐进丨MogDB 对 Oracle DBLink兼容性增强

本特性自 MogDB 5.0.0版本开始引入,支持 Oracle DBLink语法,可以使用符号访问 Oracle 数据库中的表。 示 例 01 环境准备 MogDB 环境 已安装 MogDB 数据库。已安装oracle_fdw插件,具体安装方法参见oracle_fdw安装文档https://docs.mogdb.io/…...

【Python操作基础】——集合

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…...

蓝桥杯day15刷题日记

P8748 [蓝桥杯 2021 省 B] 时间显示 思路&#xff1a;好奇怪的橙题&#xff0c;简单的运算就解决了 #include <iostream> using namespace std; long long n; int main() {cin>>n;n/1000;int hn/3600%24;int mn%3600/60;int sn%3600%60;printf("%02d:%02d:%…...

AndroidStudio中一些实用插件

1.RainbowBrackets插件为圆括号、方括号和花括号内的代码添加了漂亮的彩虹色 2.CodeGlance类似于Sublime或Xcode&#xff0c;CodeGlance插件在编辑器中嵌入了代码迷你图。滚动条也有所增大。在CodeGlance预览文件的代码模式下&#xff0c;用户可以快速导航到目标处。 3.ADBWifi…...

计算机网络⑧ —— IP地址

IP位于TCP/IP参考模型的第三层&#xff0c;也就是⽹络层 ⽹络层的主要作⽤&#xff1a;实现主机与主机之间的通信&#xff0c;也叫点对点通信 问题1&#xff1a;⽹络层(IP)与数据链路层(MAC)有什么关系呢&#xff1f; MAC的作⽤&#xff1a;实现直连的两个设备之间通信。IP的…...

YOLOv5-小知识记录(一)

0. 写在前面 这篇博文主要是为了记录一下yolov5中的小的记忆点&#xff0c;方便自己查看和理解。 1. 完整过程 &#xff08;1&#xff09;Input阶段&#xff0c;图片需要经过数据增强Mosaic&#xff0c;并且初始化一组anchor预设&#xff1b; &#xff08;2&#xff09;特征提…...

服务运营 | 印第安纳大学翟成成:改变生活的水井选址

编者按&#xff1a; 作者于2023年4月在“Production and Operations Management”上发表的“Improving drinking water access and equity in rural Sub-Saharan Africa”探讨了欠发达地区水资源供应中的可达性和公平性问题。作者于2020年1月去往非洲埃塞俄比亚提格雷地区进行…...

计算机网络(特南鲍姆版) 期末总结

教材《计算机网络&#xff08;第六版&#xff09;》 特南鲍姆版 介绍 互联的可以交换信息的计算机称之为计算机网络&#xff0c;如&#xff1a;英特网 用途 1.访问信息 客户-服务器模型 peer-to-peer system&#xff08;点对点技术&#xff0c;P2P&#xff09; P2P&#xf…...

【Hive】HIVE运行卡死没反应

Hive运行卡死 再次强调 hive&#xff1a;小兄弟&#xff0c;没想到吧&#xff0c;咱可不是随便的人。&#x1f604; 那么&#xff0c;这次又遇见了hadoop问题&#xff0c;问题描述是这样的。 hive> insert into test values(1, nucty, 男); Query ID atguigu_202403241754…...

【webpack】----错误解决【Cannot read properties of undefined (reading ‘tap‘)】

1. 报错场景 安装 webpack-obfuscator 后&#xff0c;进行 js 代码混淆编译的时候报错。 2. 报错截图 3. 错误原因 通常是由于版本不兼容或配置错误引起的。 4. 查询本地 webpack 版本 4.1 查询命令 npm 查询 npm view webpack versionyarn 查询 yarn info webpack ver…...

C/C++ 不要使用 boost::asio::ip::address::from_string 函数来转换字符串为IP地址

如本文标题所示&#xff0c;不要使用 boost::asio::ip::address::from_string 函数来转换字符串为IP地址&#xff0c;它可能导致崩溃。 这是因为 boost::asio::ip::address::from_string 函数实现并不安全有问题&#xff0c;在 Android 平台NDK优化编译的情况下&#xff0c;100…...

【Java多线程】4——特定场景解决办法

4 特定场景解决方法 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个st…...

Python:语法糖

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 在编程世界中&#xff0c;有一个词语听起来既甜蜜又神秘&#xff1a;语法糖&#xff08;Syntactic Sugar&#xff09;。这个术语并不是指真正的糖…...

nginx mirror 流量镜像

流量镜像 (Traffic Mirroring)&#xff0c;也称为流量影子 (Traffic Shadowing)&#xff0c;是一种强大的、无风险的测试应用版本的方法&#xff0c;它将实时流量的副本发送给被镜像的服务。 采用这种方法&#xff0c;您可以搭建一个与原环境类似的环境以进行验收测试&#xff…...

霉霉说地道中文,口型、卡点几乎完美,网友:配音时代结束了?

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站 每天给大家更新可用的国内可用chatGPT资源 更多资源欢迎关注 「给电影配音的时代即将结束了。」 AI 的发展让很多人直呼饭碗被抢了&#xff0c;以前是艺术家、程序员…… 现在配音员也要失业了&a…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...