当前位置: 首页 > 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…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

深入浅出WebGL:在浏览器中解锁3D世界的魔法钥匙

WebGL&#xff1a;在浏览器中解锁3D世界的魔法钥匙 引言&#xff1a;网页的边界正在消失 在数字化浪潮的推动下&#xff0c;网页早已不再是静态信息的展示窗口。如今&#xff0c;我们可以在浏览器中体验逼真的3D游戏、交互式数据可视化、虚拟实验室&#xff0c;甚至沉浸式的V…...