python 基础(四)
itomcoil 2025-01-12 15:35 30 浏览
# -- coding: utf-8 --
# @Time : 2022/8/23 15:09
# @Author : siyu.yang
# @desc : 第四章 模块,包,文件,日期、时间
# python 模块
# 对于一个复杂的功能,为了编写可维护的diamond,我们把很多函数分组,分别放
# 到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种
# 组织代码的方式。
# 在python中,一个.py文件就称之为一个模块(Module)。即一个文件被看作一个
# 独立的模块,一个模块也可以看作一个文件。
# 使用模块可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同
# 模块中,因此,在编写模块时,不必考虑名字会与其它模块冲突。但是也要注意,进来不要与
# 内置函数名字冲突。
# 内置模块:系统自带的,如:sys,os,subprocess,time,json等等 使用代码查看:
# print(help('modules'))
# 自定义模块:自己个人编写的模块代码,自定义模块时注意命名,不能和python自带的模块名称
# 冲突。例如,系统自带了 sys 模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的
# sys模块
# 开源模块:公开的第三方模块,如 https://pypi.python.org/pypi。可以安装pip install
#
# 安装,类似手机app应用实参或者是maven仓库。
# 模块导入:
# python 允许”导入“其它模块以实习那代码重用,从而也实习那了将独立的二代目文件组织
# 成更大的程序
# 系统。
# 1.import 语句 [常用于导入内置模块]:
# 用于导入模块,import 放在程序的起那么,且按照python标准库模块、python第三方模块、
# 自定义顺序
# 从上到下排开。语法如下;
# import module
# 导入厚,使用 模块名.函数名 引用
# 2.from-import 语句
# 常用于只导入指定模块的部分属性或模糊导入,语法如下:
# from module import name1,[name2[...nameN]]
# 注意:
# 不推荐使用:from module import *
# 使用as 更换名称:from module import name1 as name2
# 通过这种方式引入的时候,条用函数时只能给初函数名,不能给出模块名,但是当两个个模块含有
# 相同的名称函数的时候,后面一次引入会覆盖前一次引入,有了别名之后与哪有的方法名不能在
# 使用了
# 为什么要取别名,两个方法名称从夫了
# 系统模块调用举例:
# import time
# time.sleep(3)
#
# from time import sleep
# sleep(3)
# 用户自定义模块举例:
# 新建test.py,在test.py中定义了函数add:
# def add(a,b):
# return a+b
# 在其它文件中可以先import test,然后通过test.add(a,b)来调用,当然也可以通过
# from test import add 来引入。
# 备注:在用import 引入模块时,会将引入的模块文件中的代码执行一次。且旨在第一次引入
# 时才会执行模块中的代码。
# import 语句导入指定的模块时会执行3个不揍
# 1.找到模块文件:在模块搜索路径下搜索模块文件
# 程序的主目录
# python path 目录
# 标准连接库目录
# 2.编译成字节码:文件导入时会编译,因此,顶层文件的 .pyc 字节码文件在内部使用厚会被
# 丢弃,只有被导入的文件才会留下.pyc文件
# 3.导入import (或重载reload)时,python 会立即执行模块文件的顶层程序代码(不在函数
# 内的代码),而位于函数主体内的代码知道函数被调用后才会被执行,reload() 用于重新加载模块。
# 备注:
# 1.如果不想如第三点导入导入模块的代码,常用的解决防范时:在python模块中需要测试或者直接
# 允许代码前加
# 判断自己是不是自己,当另一个模块调用执行的时候__name__的值等于包名.模块名称
# if __name__ == '__main__':
# 2.通过sys.path.append(path) 函数来导入自定义模块的所在的目录
# python 包
# 包用于将一组模块归并到一个目录中,将有联系的模块组织在一起,可以有效避免模块名称
# 冲突的问题让应用组织结构更加清晰。
# python愈发要求每个包内都必须有__init__.py问及那,__init__.py可包含python代码,单通常
# 为空,仅用于扮演包初始化、替目录产生模块命名空间以及使用目录导入时实现from * 行为的角色。
# python 在执行模块导入时可以只当模块的导入路径 import pack1.pack2.mod1
# 如 python 应用程序目录结构:
# app
# apps
# a
# __init__.py
# test.py
# b
# __init__.py
# __init__.py
#
# apps 是最顶层的包,a 和 b都是它的子包,可以这样导入
# from apps import test
# a = test.add(3,4)
# print(a)
# 查看环境的变量目录
'''
import sys
sys.path.append('C:/Users/kcadmin/Desktop/python code/PO_UI_Test_Framework')
for i in sys.path:
print(i)
'''
# python 文件操作
# python 文件操作;
# python 提供了必要的函数和方法进行进行默认情况下的文件基本操作。可以用file对象
# 做大部分的文件操作。
# open 函数
# 你必须先用python 内置的open()函数打开一个文件,创建一个file对象,先骨干的辅助方法
# 才可以调用它进行读写。
# 语法:
# file object = open(file_name[,access_mode][,buffering])
# 各个参数的细节如下:
# access_mode: access_mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下
# 的完全列表。这个参数是非强制的,默认文件访问模式为只读((r)
# buffering : 如果buffering的值被设为 0, 就不会有寄存。如果buffing 的值取1,访问文件
# 时会寄存存行。如果将 buffering 值设为大于1的整数,表明了这就是的寄存区的缓存大小。
#如果取值负值,寄存区的缓存区大小则为系统默认
# access_mode 属性值介绍:
# 对文件的操作包含 r(读) w(写) a(追加)
# r 只读方式打开文件
# rb 以二进制格式打开一个文件用于只读。
# r+ 打开一个文件用于读写
# rb+ 以二进制格式打开一个文件用于读写
# w 写的方式打开文件,表示新建或者覆盖文件,也有 wb w+ wb+ 与 r 类似
# a 追加的方式打开文件,表示再文件内容末尾添加内容,也有 ab a+ ab+
# 注: r、w 方式操作文件时,文件指针指向文件开头,a 方式时,指向文件末尾
# file 对象的属性
# file.closed 返回 ture 如果文件已经被关闭,否则返回false。
# file.mode 返回被打开文件的访问模式
# file.name 返回文件的名称
# file.encoding 返回文件编码
# 模式 r r+ w w+ a a+
# 读 + + +
# 写 + + + + +
# 创建 + + + +
# 覆盖 + +
# 指针在开始 + + + +
# 指针在结尾 + +
# 读取文件内容:
# read() 方法从一个打开的文件中读取一个字符。需要重点注意的是,python文件字符串可以是
# 二进制数据,而不仅仅是文字。
# 语法:fileObject.read([count])
# 在这里,被传递的参数要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,
#如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
# 关闭文件:
# File 对象的close() 方法刷新缓冲区里任何还没有写入的信息,并关闭该文件,这之后
# 便不能再进行写入。
# 语法 : fileObject.close()
# 往文件写入数据:
# write() 方法可将任何字符串写入一个打开的文件。需要注意重点是,python 字符串可以是
# 二进制数据,而不仅仅是文字。write() 方法不在字符串的结尾不添加换行符 ('\n');
# flush() 方法刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件
# 语法:
# fileObject.write(string)
# fileObject.flush()
# 其它操作文件方法:
# fp.readline([size]) # 读一行,如果定义了size,有坑你返回的只是一行的一部分
# fp.readlines([size]) # 把文件每一行作为一个list的一个成员。其实它的内部使通过
# 循环调用,如果提供size 参数,size 是表示读取内容的总长,
# 也就是说坑你值读到文件的一部分。
# fp.writelines(eq) # 把seq的内容全部写道文件中(多行一次性写入)。如果血药换行则要自
# 己加入每行的换行符
# fp.next() # 返回下一行,并将文件操作标记位移到下一行。如果需要换行则要自己加入
# 每行的换行符
# 举例:
# 读入内容 read() read(n) readline()
# 1.read 方法无参数
'''
txt1 = open('C:/Users/kcadmin/Desktop/hello.txt','r',encoding='utf-8')
str1= txt1.read()
print(str1)
txt1.close()
'''
# 2.read 方法有参数,表示读取的字符数
'''
a = open('C:\\Users\\kcadmin\\Desktop\\python code\\PO_UI_Test_Framework
\\sample\\test_02\\
demo_04.py',encoding='utf-8')
str1 = a.read(3)
str2 = a.read(3) # 在同一个io流,如果有多个read会接着从上一次的位置开始读取
print(str1)
print(str2)
'''
# 3.readline() 读取行
'''
txt1 = open('C:/Users/kcadmin/Desktop/hello.txt','r',encoding='utf-8')
# 无参数的时候默认只读一行
str1= txt1.readline()
# 有参数的时候,就是读取的字符数,大于一行,也只返回一行的内容
str2= txt1.readline(33)
# 无参数的时候,读取整个文件的内容,结果是一个列表,每一行时列表的一个元素
str3= txt1.readlines()
# 有参数的时候,不满一行也会读取一行,超过一行的字符串才会读取下一行
str4= txt1.readlines(3)
print(str1)
print(str2)
print(str3)
print(str4)
txt1.close()
'''
# 4.写文件
'''
file = open('C:/Users/kcadmin/Desktop/hello.txt','w',encoding='utf-8')
print(file.write('3333333333'))
file.flush() # 从缓冲区保存到硬盘,只要文件内容发生了改变就必须flush()提交
file.close() # 关闭文件,不关闭文件会造成文件损坏或文件丢失
'''
# 5.常见属性
'''
txt1 = open('C:/Users/kcadmin/Desktop/hello.txt','a',encoding='utf-8')
print('文件名:',txt1.name)
print('编码:',txt1.encoding)
print('文件权限:',txt1.mode)
print('是否关闭:',txt1.closed)
txt1.close()
print('是否关闭:',txt1.closed)
'''
# 练习:创建一个文件123.txt 文件内容为“我爱学习”
# 创建一个abc.txt 文件内容为“我享受生活”
# 再将两个文件的内容进行交互
'''
txt1 = open('C:/Users/kcadmin/Desktop/123.txt','w')
txt2 = open('C:/Users/kcadmin/Desktop/abc.txt','w')
content1 = '我爱学习'
content2 = '我享受生活'
txt1.write(content1)
txt2.write(content2)
txt1.flush()
txt2.flush()
txt1.close()
txt2.close()
txt3 = open('C:/Users/kcadmin/Desktop/123.txt','r')
txt4= open('C:/Users/kcadmin/Desktop/abc.txt','r')
str1 = txt3.read()
str2 = txt4.read()
txt3.close()
txt4.close()
txt3 = open('C:/Users/kcadmin/Desktop/123.txt','w')
txt4= open('C:/Users/kcadmin/Desktop/abc.txt','w')
txt3.write(str2)
txt4.write(str1)
txt3.flush()
txt4.flush()
txt3.close()
txt4.close()
'''
# 文件位置:
# tell() 方法告诉你文件内的当前位置,换句话说,下一次的的读写会发生在文件开头这么多字
节之后。
# seek(offset[from]) 方法改变当前文件的位置。offset 变量表示要移动的字节数。from 变量
# 指定开始移动字节的参考位置。如果from 被设为0,这意味着将b文件的开头作为移动字节的
#参考位置。如果 设为1,则使用当前的位置作为参考位置。如果它设为2,那么该文件的末尾将
# 作为参考位置。如果没有使用b模式(二进制)打开文件,那么只能从文件起始位置产生位移
'''
txt5 = open('C:/Users/kcadmin/Desktop/123.txt','rb') # 以二进制方式不能指定编码
str = txt5.read(5)
print(str)
print(txt5.tell())
# seek(数量,位置) 0 -- 起始位置,1 -- 当前位置 ,2 -- 文件末尾
print(txt5.seek(6,1))
str2 = txt5.read(5)
print(str2)
txt5.close()
'''
# 重命名和删除文件
# python 的 os 模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。
# 要使用这个模块,你必须先导入它,然后可以调用相关的各种功能。
# rename() 方法:
# rename() 方法需要两个参数,当前的文件名和新文件名。
# 语法:
# os.rename(current_file,new_file_name)
# remove()方法:
# 你可以用remove() 方法删除文件,需要提供要删除的文件名作为参数
# 语法:
'''
import os
# os.rename('C:/Users/kcadmin/Desktop/123.txt', 'C:/Users/kcadmin/Desktop/aaa.txt')
os.remove('C:\\Users\\kcadmin\\Desktop\\aaa.txt')
'''
# 目录操作:
# mkdir()方法: 可以使用os模块的mkdir()方法当前目录下创建新的目录
# 语法: os.mkdir(file_name)
# chdir()方法: 可以用chdir() 方法来改变当前的目录。
# 语法: os.chdir(filename)
# makedirs()方法:创建多级目录:
# 语法:os.makedirs('c:\python\test')
# getcwd() 方法: 得到当前工作目录
# 语法: os.getcwd()
# isdir()/isfile()方法:检验给出的路径是否是一个目录/文件
# os.path.isdir("c:/book/temp")
# 日期、时间操作
# 在进行编程活动中,经常会用到日期和时间,python有相应的模块处理日期和时间,
#在介绍python处理日期和时间的方式之前,先理解时间戳概念:
# 时间戳是指格林威时间1970年01月00时00分00秒(北京时间1970年01月00时00分00秒)起到
# 现在的总秒数。通俗的讲,时间戳时一份能够表示一份数据在一个特定时间点已经存在的完整
# 的可验证的数据
# 在python 中常用time和datetime来处理时间【注意导包】
# time 模块一般常用4种方式显示时间:
# 1.时间元组,即用一个元组组装起来的9组数字处理时间
'''
# (年、月、日、是、分、秒、一周的低级日、一年的低级日、夏令时)
t = (2022, 8, 26, 14, 50, 0, 0, 0,0)
print(t)
'''
# 2.时间戳
'''
import time
print(time.time()) # 当前时间戳
'''
# time.mktime(t) # 给订时间的时间戳
'''
import time
t1 = (2022,8,26,14,50,0,0,0,0)
print(time.mktime(t1))
'''
# time.localtime(时间戳) # 转换时间戳为元组
'''
import time
print(time.localtime(1661496600.0))
'''
# 3.格式化显示 (即字符串、时间元组相互转换)
# time.strfime("%Y_%m_%d %H:%M:%S:%p",t) #不加时间元组显示当前时间
# time.strptime(str,'%Y-%m-%d %X')
'''
import time
t = 1661496600
# 价将时间t按照固定的格式显示
print(time.strftime("%Y_%m_%d %H:%M:%p",time.gmtime(t)))
# 将字符串时间按照指定时间显示
print(time.strptime('2022-8-26 14:50:00','%Y-%m-%d %H:%M:%S'))
print(time.time())
print(time.localtime(time.time()))
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))
print(time.strptime('2022-08-29 15:55:40','%Y-%m-%d %H:%M:%S'))
'''
# 4.英文显示 'Mon Jan 26 00:52:24 1970'
'''
import time
t = (2022,8,29,15,55,40,0,0,0)
print(time.asctime(t))
'''
# datetime模块
# 模块下有几个子模块:
# date:处理年月日
# time:处理时分秒、微妙
# datetime:处理年月日,时分秒,微妙
# 1.时间元组表示:
# dt = datetime.datetime(2022,08,26,15,02,45,0) # (年、月、日、时、分、秒、微妙)
'''
import datetime
dt = datetime.datetime(2022,8,26,15,2,45,0)
print(dt)
'''
# 2.截取时间元组种的部分:
# dt.year dt.month dt.date() dt.time() dt.weekday() dt.isoweekday()
'''
import datetime
dt = datetime.datetime(2022,8,26,15,2,45,0)
print('年:',dt.year)
print('月:',dt.month)
print('日期:',dt.date())
print('时间:',dt.time())
print('星期:',dt.weekday())
print('星期几:',dt.isoweekday()) # 返回0-6
'''
# 3.获取当前时间
# datetime.datetime.today() datetime.datetime.now()
'''
import datetime
print('获取当前时间:',datetime.datetime.today())
print('获取当前时间:',datetime.datetime.now())
'''
# 4.获取时间戳
# dt.timestamp() dt.fromtimestamp()
'''
import datetime
dt = datetime.datetime(2022,8,26,15,2,45,0)
# 将时间转换成时间戳
print('将时间转换成时间戳:',dt.timestamp())
# 将时间戳转换成字符串
print('将时间戳转换成字符串:',dt.fromtimestamp(dt.timestamp()))
'''
# 5.按自定义格式返回字符串
# dt.strftime('%Y_%M_%D %H:%M:%s')
'''
import datetime
print(datetime.datetime.strptime('2020-01-01 0:0:0', '%Y-%m-%d %H:%M:%S'))
'''
# 6.英文显示
# dt.ctime()
'''
import datetime
dt = datetime.datetime(2022,8,26,15,2,45,0)
print(dt.ctime())
'''
相关推荐
- python创建文件夹,轻松搞定,喝咖啡去了
-
最近经常在录视频课程,一个课程下面往往有许多小课,需要分多个文件夹来放视频、PPT和案例,这下可好了,一个一个手工创建,手酸了都做不完。别急,来段PYTHON代码,轻松搞定,喝咖啡去了!import...
- 如何编写第一个Python程序_pycharm写第一个python程序
-
一、第一个python程序[掌握]python:python解释器,将python代码解释成计算机认识的语言pycharm:IDE(集成开发环境),写代码的一个软件,集成了写代码,...
- Python文件怎么打包为exe程序?_python3.8打包成exe文件
-
PyInstaller是一个Python应用程序打包工具,它可以将Python程序打包为单个独立可执行文件。要使用PyInstaller打包Python程序,需要在命令行中使用py...
- 官方的Python环境_python环境版本
-
Python是一种解释型编程开发语言,根据Python语法编写出来的程序,需要经过Python解释器来进行执行。打开Python官网(https://www.python.org),找到下载页面,选择...
- [编程基础] Python配置文件读取库ConfigParser总结
-
PythonConfigParser教程显示了如何使用ConfigParser在Python中使用配置文件。文章目录1介绍1.1PythonConfigParser读取文件1.2Python...
- Python打包exe软件,用这个库真的很容易
-
初学Python的人会觉得开发一个exe软件非常复杂,其实不然,从.py到.exe文件的过程很简单。你甚至可以在一天之内用Python开发一个能正常运行的exe软件,因为Python有专门exe打包库...
- 2025 PyInstaller 打包说明(中文指南),python 打包成exe 都在这里
-
点赞标记,明天就能用上这几个技巧!linux运维、shell、python、网络爬虫、数据采集等定定做,请私信。。。PyInstaller打包说明(中文指南)下面按准备→基本使用→常用...
- Python自动化办公应用学习笔记40—文件路径2
-
4.特殊路径操作用户主目录·获取当前用户的主目录路径非常常用:frompathlibimportPathhome_dir=Path.home()#返回当前用户主目录的Path对象...
- Python内置tempfile模块: 生成临时文件和目录详解
-
1.引言在Python开发中,临时文件和目录的创建和管理是一个常见的需求。Python提供了内置模块tempfile,用于生成临时文件和目录。本文将详细介绍tempfile模块的使用方法、原理及相关...
- python代码实现读取文件并生成韦恩图
-
00、背景今天战略解码,有同学用韦恩图展示各个产品线的占比,效果不错。韦恩图(Venndiagram),是在集合论数学分支中,在不太严格的意义下用以表示集合的一种图解。它们用于展示在不同的事物群组之...
- Python技术解放双手,一键搞定海量文件重命名,一周工作量秒搞定
-
摘要:想象一下,周五傍晚,办公室的同事们纷纷准备享受周末,而你,面对着堆积如山的文件,需要将它们的文件名从美国日期格式改为欧洲日期格式,这似乎注定了你将与加班为伍。但别担心,Python自动化办公来...
- Python路径操作的一些基础方法_python路径文件
-
带你走进@机器人时代Discover点击上面蓝色文字,关注我们Python自动化操作文件避开不了路径操作方法,今天我们来学习一下路径操作的一些基础。Pathlib库模块提供的路径操作包括路径的...
- Python爬取下载m3u8加密视频,原来这么简单
-
1.前言爬取视频的时候发现,现在的视频都是经过加密(m3u8),不再是mp4或者avi链接直接在网页显示,都是经过加密形成ts文件分段进行播放。今天就教大家如果通过python爬取下载m3u8加密视频...
- 探秘 shutil:Python 高级文件操作的得力助手
-
在Python的标准库中,shutil模块犹如一位技艺精湛的工匠,为我们处理文件和目录提供了一系列高级操作功能。无论是文件的复制、移动、删除,还是归档与解压缩,shutil都能以简洁高效的方式完成...
- 怎么把 Python + Flet 开发的程序,打包为 exe ?这个方法很简单!
-
前面用Python+Flet开发的“我的计算器v3”,怎么打包为exe文件呢?这样才能分发给他人,直接“双击”运行使用啊!今天我给大家分享一个简单的、可用的,把Flet开发的程序打包为...
- 一周热门
- 最近发表
-
- python创建文件夹,轻松搞定,喝咖啡去了
- 如何编写第一个Python程序_pycharm写第一个python程序
- Python文件怎么打包为exe程序?_python3.8打包成exe文件
- 官方的Python环境_python环境版本
- [编程基础] Python配置文件读取库ConfigParser总结
- Python打包exe软件,用这个库真的很容易
- 2025 PyInstaller 打包说明(中文指南),python 打包成exe 都在这里
- Python自动化办公应用学习笔记40—文件路径2
- Python内置tempfile模块: 生成临时文件和目录详解
- python代码实现读取文件并生成韦恩图
- 标签列表
-
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)
- shutil.copy() (33)