首页 > 编程语言 >python学习——【第十四弹】

python学习——【第十四弹】

时间:2023-02-25 21:32:56浏览次数:53  
标签:sys python random 学习 模块 第十四 print path os

前言

上篇文章 ​​python学习——【第十三弹​​】 中介绍了python中的模块,这篇文章接着学习python中的

python中的包

包是一种用“点式模块名”构造Python模块命名空间的方法。在包中存放着一些功能相近的模块。


python学习——【第十四弹】_sys

包的创建和导入

包的创建

我们可以在pytarm中创建一个package文件,当我们创建完成后会自动创建一个__init__.py文件,这时我们就完成了一个包文件的创建。

也就是这个__init__.py文件,可以让我们判断出哪些是python当中的包,目录中通常不含有__init__.py文件。

创建完成包文件以后,我们就可以在该文件目录下创建模块,当我们导入包的时候亦可导入包中所含的模块。

python学习——【第十四弹】_os模块_02


包的导入

包的导入语法为:import  包名.模板块

假如我们在pack1包中的模块index1中写入a=100;在index2中写入b=200,然后在创建的目录

directory1中的文件demo1中进行包的导入

# 在该文件中导入pack1包中的模块
# 注意导入的包所在的路径
import mokuai.pack1.index1
print(mokuai.pack1.index1.a)#输出模块中的变量a

python学习——【第十四弹】_数据_03

我们也可以为需要导入的模块进行别名:

# 我们可以为需要导入的模块设置别名
import mokuai.pack1.index1 as index_a #其中index_a是mokuai.pack1.index1的别名
print(index_a.a) #输出模块中的a

python学习——【第十四弹】_python_04

需要注意的是利用import导入时,import后面只能跟包名或模块名;

当然我们也可以利用from...import的方式进行导入可以导入包,模块,函数或者是模块中的变量:

# 使用from....import方式进行导入
from mokuai.pack1 import index2
print(index2.b)
from mokuai.pack1.index2 import b
print(b)
from mokuai.pack1.index1 import a as index__a
print(index__a)

python学习——【第十四弹】_sys_05

python中的内置模块

上篇文章中我们提到了python中的一部分内置函数,这里简单的运用下这些内置模块:

python学习——【第十四弹】_urllib_06

os模块

os模块提供了多数操作系统的功能接口函数,当os模块被导入后,他会自适应于不同的操作系统平台,根据不同的平台进行相应的操作;在python中,os模块是比较常用的模块:

#os模块
import os
# 获取当前工作目录,也就是当前python脚本工作的目录路径
print(os.getcwd())

# 改变当前脚本工作目录,相当于shell下的cd
# print(os.chdir("dirname"))

# 返回当前目录
print(os.curdir)
# 返回当前目录的父目录字符串名
print(os.pardir)

# 生成多层递归目录
os.makedirs('dir1/dir2')
# 若指定目录为空,则删除并递归到上一级目录;如果也为空也进行删除,以此类推
os.removedirs('dirname')

# 创建一个新目录
os.mkdir('dirname')
# 删除空目录,若指定目录不为空就报错
os.rmdir('dirname')
# 删除一个文件
os.remove()

# 列举出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的方式打印
print(os.listdir('dirname'))

# 遍历所有目录,包括子目录
os.walk('dirname')

# 重命名文件/目录
os.rename('old','new')
# 获取文件/目录信息
os.stat('path/filename')

python学习——【第十四弹】_python_07

# 查看系统特定的路径分隔符
print(os.sep)
# 查看字符串指示当前使用平台
print(os.name)
# 查看平台使用的行终止符
print(os.linesep)
# 查看当前用于分割路径的字符串
print(os.pathsep)
# 执行shell命令 可以保存执行结果
print(os.system("shell"))
# 运行shell命令 可以保存执行结果
print(os.popen("shell").read())
# 获取系统环境变量
print(os.environ)

python学习——【第十四弹】_os模块_08


# 返回path规范化的绝对路径
print(os.path.abspath('filename/dirname'))
# 将path分割成目录和文件名按照元组返回
print(os.path.split("filename"))
# 返回path的目录,即os.path.split(path)的第一个元素
print(os.path.dirname("dirname"))
# 返回path最后的文件名,若path以/或者是\结尾会返回空值
print(os.path.basename("filename"))
# 如果path存在就返回True,如果path不存在就返回False
print(os.path.exists(''))
# 如果path是绝对路径,就返回True
print(os.path.isabs(""))
# 如果path是一个存在的文件就返回True,否则返回False
print(os.path.isdir("filename"))
# 如果path是一个存在的目录,就返回True,否则就返回False
print(os.path.isdir('dirname'))
# 将多个路径组合后返回,第一个路径之前的参数将会被忽略
print(os.path.join(''))
# 返回path所指向的文件或者是目录的最后存取时间
print(os.path.getatime('filename'))
# 返回path所指向的文件或者目录的最后修改时间
print(os.path.getmtime('filename'))


sys模块

python中的sys模块提供给访问解释器使用或维护的变量,和与解释器进行交互的函数。sys模块负责与python解释器的交互,提供了一系列的函数的和变量,用于操控python运行时的环境,sys模块也是python中默认的集成模块,被集成在解释器中。

import  sys
# 获取数据内存
print(sys.getsizeof(10))
print(sys.getsizeof(True))
print(sys.getsizeof(False))

# 获取命令行参数列表,第一个参数时程序本身的路径
print(sys.argv)

# 退出程序,正常退出时exit(0)
# print(sys.exit(0))

# 获取python解释器程序的版本信息
print(sys.version)

# 返回模块的搜索路径,初始化时使用python path环境变量的值
print(sys.platform)

# 遍历当前python文件的路径
print(sys.path[0])
print(sys.path[1])
print(sys.path[2])
print(sys.path[3])

# 输入相关
print(sys.stdin)
# 输出相关
print(sys.stdout)
# 错误相关
print(sys.stderr)

python学习——【第十四弹】_os模块_09

使用sys模块中的标准输出实现进度条:

print('-----------进度条------------')
# 使用标准输入和输出实现动态进度条
import sys
import time
def view_bar(num1,num2):
rate=num1/num2
rate_num=int(rate*100)
r='\r%s%d%%' % (">"*num1,rate_num)
sys.stdout.write(r)
sys.stdout.flush()
if __name__=='__main__':
for i in range(0,101):
time.sleep(0.1)
view_bar(i,100)

python学习——【第十四弹】_os模块_10

time模块

python学习——【第十四弹】_数据_11

# time 提供与时间相关的各种函数
import time
print(time.time()) #输出当前的秒数
print(time.localtime(time.time())) #将输出的秒数转换为当前具体的时间

python学习——【第十四弹】_数据_12

比如当我们利用os模块中的getmtime()函数返回修改某个文件过目录的时间时,我们就可以将返回的秒数格式化成年-月-日 时:分:秒的形式:

# 格式化时间
import time
seconds=os.path.getmtime('index_1')
timeArray=time.localtime(seconds)
Styletime=time.strftime("%y-%m-%d %H:%M:%S",timeArray)
print(Styletime)
# 23-02-25 18:55:06

我们也可以安装第三方模块,比如:可以安装第三方模块schedule,导入time模块,实现定时输出功能:

python学习——【第十四弹】_数据_13

#安装第三方模块schedule,导入time模块,实现定时输出功能
import schedule
import time
def work():
print('-------我被执行------')
# 指定每三秒执行一次
schedule.every(3).seconds.do(work)
# 每隔三秒,休眠一秒钟
while True:
schedule.run_pending()
time.sleep(1)

python学习——【第十四弹】_os模块_14

random模块

random模块实现了一个伪随机数生成器,可以用来生成随机数以完成与随机数相关的功能。

import random
# 生成一个1——100的随机整数,包括1和100
print(random.randint(1,100))
# 55

# seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。
random.seed(10)
print('使用整数10种子生成随机数',random.random())
# 使用整数10种子生成随机数 0.5714025946899135

# 随机打乱列表元素排列
lis1=[1,2,3,4,5,6,7]
random.shuffle(lis1)
print(lis1)
# [3, 2, 6, 1, 5, 7, 4]

# 生成1--100之间的浮点数
print(random.uniform(1,100))
# 81.51880388437468

# 生成1——100之间的整数但是不包括10
print(random.randrange(1,100))
# 36

# 通过使用random.randint()函数,随机生成整数,字符,大小写等.
print(random.randint(1,100))
print(chr(random.randint(65,90))) #随机生成A——Z
print(chr(random.randint(48,57)))#随机生成0-9
print(chr(random.randint(97,122)))#随机生成a-z

# 从列表中随机弹出一个数据
string=['hello','world','你好世界']
print(random.choice(string))
# 你好世界

利用random模块生成验证码;

# 使用random函数生成验证码
lis2=[]
for i in range(5):
j = random.randint(0,5)
if j ==2 or i==4:
num=random.randrange(0,5)
lis2.append(str(num))
else:
temp=random.randrange(65,90)
num2=chr(temp)
lis2.append(num2)
result=''.join(lis2)
print(result)
#KHLN4

urllib包

Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理

 注意,urllib是一个包,当我们导入这个包时系统会自动创建一个__init__.py的python文件,urllib这个包中含有__init__.py文件,并且包含一些内置模块。

urllib.request 定义了一些打开 URL 的函数和类,包含授权验证、重定向、浏览器 cookies等。

urllib.request 可以模拟浏览器的一个请求发起过程。我们引入urllib包中的request模块中的urlopen方法,可以让它返回所查询到的数据,它的语法为:

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
  • url:url 地址。
  • data:发送到服务器的其他数据对象,默认为 None。
  • timeout:设置访问超时时间。
  • cafile 和 capath:cafile 为 CA 证书, capath 为 CA 证书的路径,使用 HTTPS 需要用到。
  • cadefault:已经被弃用。
  • context:ssl.SSLContext类型,用来指定 SSL 设置。

如下,我们利用这个方法去读取百度服务器的返回数据:

read() 是读取整个网页内容,我们可以指定读取的长度:

# urllib 用于读取来自网上(服务器)的数据标准库
import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read(500))

我们使用 urlopen 打开一个 URL,然后使用 read() 函数获取网页的 HTML 实体代码。

python学习——【第十四弹】_os模块_15

除此之外,我们还可以使用:

readline() - 读取文件的一行内容

readlines() - 读取文件的全部内容,它会把读取的内容赋值给一个列表变量。

当我们在对网页进行抓取时,经常需要判断网页是否可以正常访问,这时就可以使用 getcode() 函数获取网页状态码,返回 200 说明网页正常,返回 404 说明网页不存在:

import urllib.request

myURL1 = urllib.request.urlopen("https://www.baidu.com/")
print(myURL1.getcode()) # 200

try:
myURL2 = urllib.request.urlopen("https://www.baidu.com/no.html")
except urllib.error.HTTPError as e:
if e.code == 404:
print(404) # 404

每日一语

最值得欣赏的风景,是自己前进的足迹!

如有不足,感谢指正!

标签:sys,python,random,学习,模块,第十四,print,path,os
From: https://blog.51cto.com/u_15928170/6085684

相关文章

  • python绘制基本图
    importpandasaspdimportnumpyasnpcatering_sale='D:\大三下\大数据实验课\data\catering_sale.xls'data=pd.read_excel(catering_sale,names=['data','sale'])......
  • python基础-元组tuple( )
    元组的定义和操作元组的特性:元素数量支持多个元素类型任意下标索引支持重复元素支持可修改性不支持数据有序是使用场景不可修改、可重复的......
  • 软件工程学习第六天
        今天我整理了其他学科的知识,所以只拿出了20多分钟学习css的列表内容。    CSS包括两种列表:无序列表 ul,列表项标记用特殊图形,之如小圆形,小三角形等;有序......
  • python基础-列表[ ]
     1列表的定义#定义一个列表listmy_list=["jhk",123,'fasdf']print(my_list)print(type(my_list))#定义一个嵌套的列表my_list=[[1,2,3],[4,5,6],......
  • python 画图 chap3
    importmatplotlib.pyplotaspltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falseplt.figure()p=data.boxplot(return_type='dict'......
  • python基础-基本语句
    1条件语句在进行逻辑判断时,我们需要用到条件语句,Python 提供了 if、elif、else 来进行逻辑判断。格式如下所示: 1if判断条件1:2执行语句1...3elif判断......
  • python基础-入门必备知识
    1标识符标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。以下划线开头的标识符有特殊含义......
  • MySQL学习笔记-数据控制语言
    SQL-数据控制语言(DCL)DCL语句用于管理数据库用户,控制数据库的访问权限一.管理用户1.查询用户#访问mysql数据库usemysql;#查询user表select*fromuser;主......
  • 编程语言学习攻略
    程序设计语言的构成语言的种类千差万别,但是,一般来说,基本成分不外四种:1.数据成分,用以描述程序中所涉及的数据;2.运算成分,用以描述程序中所包含的运算;3.控制成分,用以表......
  • 第二周学习总结
    本周一老师把我们留下来了我什么都不会但后来我决定开始学了每天学习了一点点。特别是今天我已经可以写出周一的那个作业了虽然是改的结构但我发现很多都是相似的。......