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])

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

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

相关文章

Intellij IDEA 类注释模板设置

1、配置全局USER 在此配置全局USER,用于填充自动生成的注释中的作者author属性。 注释模板中的user参数是默认是获取系统的用户(当然注释作者也可以直接写固定值),如果不想和系统用户用同一个信息,可以在IDEA中进行配…

【自我提升】一、Hyperledger Fabric 概念梳理

写在前面:最近因为业务需要,开始学习Hyperledger Fabric了,做java全栈工程师可真难搞。现在算是啥类型的都在涉及了,现在这个技术啥都不懂,就先开个学习专栏,记录记录。顺带也给各位道友参考参考。 目录 …

「媒体宣传」媒体邀约几种常见方法!-51媒体

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体邀约的常见方法确实包括电话邀约、邮件邀约、社交媒体邀约以及通过媒体公关公司代邀约等。 电话邀约:这是一种直接且高效的方式,可以通过电话与媒体记者沟通&…

HTTP请求走私!!!(一)

想都是问题,做才是答案 什么是请求走私? HTTP请求走私是针对于服务端处理一个或者多个接收http请求序列的方式,进行绕过安全机制,实施未授权访问一种攻击手段,获取敏感信息,并直接危害其他用户。 Web 应用…

【前端学习——css篇】4.px和rem的区别

https://github.com/febobo/web-interview 4.px和rem的区别 ①px px,表示像素,所谓像素就是呈现在我们显示器上的一个个小点,每个像素点都是大小等同的,所以像素为计量单位被分在了绝对长度单位中 有些人会把px认为是相对长度&…

大语言模型(LLM)token解读

1. 什么是token? 人们经常在谈论大模型时候,经常会谈到模型很大,我们也常常会看到一种说法: 参数会让我们了解神经网络的结构有多复杂,而token的大小会让我们知道有多少数据用于训练参数。 什么是token?比…

浅聊openGauss逻辑架构

浅聊 openGauss 逻辑架构 概述 openGauss 数据库是一款由华为主导、各个生态合作伙伴共同建设的开源关系型数据库管理系统,开源发行协议遵从木兰宽松许可证 v2。 openGauss 数据库源于 PostgreSQL-XC 项目,内核源于 Postgres 9.2.4,总代码…

mybatis注解方式if标签报错元素内容必须由格式正确的字符数据或标记组成

在使用mybatis的注解方式的时候出现个问题,我需要一个复杂的sql语句,既有if判断又有in语句,刚开始使用mybatis自己的if动态函数的时候完全没问题,代码如下: Select({"select * ","from order_info &qu…

利用python脚本,根据词条爬取百度图片(爬虫)

把广角,换成你的关键词就行 # -*- coding: utf-8 -*- """ Created on Wed Mar 29 10:17:50 2023 author: MatpyMaster """ import requests import os import redef get_images_from_baidu(keyword, page_num, save_dir):header {Us…

Hadoop+Spark大数据技术 第三次作业

第三次作业 1.简述HDFS Shell三种操作命令hadoop fs、hadoop dfs、hdfs dfs的异同点。 相同点 用于与 Hadoop 分布式文件系统(HDFS)交互。可以执行各种文件系统操作,如文件复制、删除、移动等。 不同点 hadoop fs、hadoop dfs已弃用&#xf…

使用vue构建一个简单实用的春节红包插件!

摘要:本文将介绍如何使用Vue.js构建一个简单实用的春节红包插件。该插件通过模拟红包的打开和关闭过程,以及金额的随机分配,为春节红包活动提供了一个有趣且互动的体验。 一、引言 在春节这个充满欢乐和祝福的时刻,红包成为了传递…

Encoding类

Encoding System.Text.Encoding 是 C# 中用于处理字符编码和字符串与字节之间转换的类。它提供了各种静态方法和属性,**用于在不同字符编码之间进行转换,**以及将字符串转换为字节数组或反之。 在处理多语言文本、文件、网络通信以及其他字符数据的场景…

node.js项目初始化操作

项目环境Vscode 1.新建一个文件夹node.js(xx.js) 2.右键点击node.js,点击打开终端 我在VScode打开终端 输入npm init初始化项目没反应。 解决方法:进入文件夹node.js,出入cmd跳转到终端 重新输入npm init命令 正确结果如下图 后续命令按下…

【Leetcode】2580. 统计将重叠区间合并成组的方案数

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给你一个二维整数数组 ranges ,其中 ranges[i] [starti, endi] 表示 starti 到 endi 之间(包括二者)的所有整数都包含在第 i 个区间中。 你需要…

Tunes不能读取iPhone的内容,请前往iPhone偏好设置的摘要选项卡,然后单击恢复以将此iPhone恢复为出厂设置

重启itunes: 参考链接: https://baijiahao.baidu.com/s?id1642568736254330322&wfrspider&forpc 人工智能学习网站: https://chat.xutongbao.top

什么是solana PDA账户?

Solana 设计的一个核心理念是万物皆账户,Solana 上的几乎所有数据都可以表示为账户。 在 Solana 上,不仅仅是用户的钱包地址拥有账户,还包括智能合约、数据结构、代币、NFT 等。这些账户可以持有各种类型的数据,包括数字资产、智…

插值表达式、Vue指令、指令补充

vue上手步骤 <body><!-- vue2语法 --><!-- 1.准备容器&#xff1a;一会vue就会把数据展示到这里 --><div id"app"><!-- 4.使用{{ }}即可显示数据 &#xff0c;{{}}就是插值表达式--><p>姓名&#xff1a;{{uname}}</p><…

开源AI引擎|企业合同管理:自然语言处理与OCR技术深度融合

一、企业应用&#xff1a;合同智能管理 结合NLP和OCR技术&#xff0c;企业可以构建智能化的合同管理系统&#xff0c;实现合同的自动化审查、风险评估和知识抽取。这样的系统不仅能够提高合同处理的效率&#xff0c;还能够降低人为错误&#xff0c;加强风险控制。 例如&#x…

Elasticsearch 中误操作删除了所有用户解决办法

如果在 Elasticsearch 中误操作删除了所有用户&#xff0c;可以通过以下步骤重新创建用户和密码&#xff1a; 在配置文件中开启 x-pack 验证&#xff0c;修改config&#xff08;一般是在/usr/share/elasticsearch&#xff09;目录下面的elasticsearch.yml文件&#xff0c;添加…

vue3+threejs新手从零开发卡牌游戏(十八):己方场上手牌添加画线

手牌上场后&#xff0c;点击己方怪兽区卡牌会跟随鼠标移动画出线条&#xff0c;之后可以通过判断鼠标移动到对方场地的某卡牌进行战斗操作&#xff0c;代码主要改动在game/index.vue文件。 1.添加鼠标移动监听事件&#xff08;移动端&#xff09;&#xff1a; window.addEven…