‘壹’ python其实很简单 第十六章 目录管理
为实现“按名存取”,必须建立文件名与辅存空间中物理地址的对应关系,体现这种对应关系的数据结构称为文件目录。文件目录表目至少要包含文件名、文件的类型、文件的长度、访问权限、建立时间、访问时间和文件存储地址等内容。通过前面一章的介绍,我们已经知道在文件信息中已经包含了文件名、文件类型访问权限等信息,而存储地址的信息则包含在目录信息中。
16.1路径
路径通常用一个字符串来表示,可以按照路径信息定位到一个目录或文件。如:“C:UsersAdministratorPictures1.jpg”这个信息可以非常方便的找到这个图片文件,“C:UsersAdministratorPictures”这个信息可以帮助我们找到更多的图片文件。
这里所说的“路径”和上网时碰到的“地址”含义比较相似,互联网就相当于将个人电脑可以访问的范围扩大了,互联网中的地址也是对应某一个存储空间的路径,按照地址可以访问互联网上的信息,就如同按照路径可以找到计算机中的文件一样。
在Python中,可以导入 os模块 来进行目录操作。
1、获取当前工作目录getcwd()函数
例:
import os
print(os.getcwd())
运行结果:
C:
这个路径是当前Python IDLE所在的地址。
2、获取文件的绝对路径abspath()函数
abspath()函数是os模块的子模块path提供的一个函数。用法举例如下:
import os
print(os.path.abspath(r'test.txt'))
运行结果:
C: est.txt
16.2 目录操作类函数
1、判断目录是否存在exists()函数
exists()函数是os模块的子模块path中的函数。使用方法举例如下:
import os
print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))
输出结果:
True
2、创建目录mkdir()函数和makedirs()函数
mkdir()函数和makedirs()函数都是由os模块提供的,下面举例说明用法和区别。
例1:
import os
path='d:test'
if not os.path.exists(path):
os.makedirs(path)
print('该文件目录创建成功!')
如果目录d: est已存在,则不再创建;若不存在,则创建。
例2:
import os
path='d:testtest1test11'
if not os.path.exists(path):
os.makedirs(path)
print('该文件目录创建成功!')
虽然目录d: est已存在,但可以在其下继续创建子目录。上面的代码可以成功地创建d: est est1 est11目录。
mkdir()函数和makedirs()函数用法基本一样,不同之处在于mkdir()函数只能能创建一级目录。
3、删除目录函数rmdir()函数
rmdir()函数是由os模块提供的。
例如:通过上面的例子已经建立了d: est est1 est11目录,现在去删除子目录test11(此子目录为空目录),代码如下:
import os
os.rmdir('d:testtest1test11')
如果要删除的目录非空(其下还包含有文件或文件夹),则不能删除,并且出现Windows文件操作错误的提示(Python是调用操作系统命令完成文件和目录操作的)。譬如d: est目录下含有有子目录,则不能对其进行如下删除操作。
import os
os.rmdir('d:test')
此时,会出现如下错误提示:
Traceback (most recent call last):
File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in
os.rmdir('d:test')
OSError: [WinError 145] 目录不是空的。: 'd:test'
4、删除非空目录函数rmtree()函数
rmtree()函数是由Python内置的标准模块shutil提供的,可以删除目录及目录下的文件和子目录。如删除d: est目录及其下的子目录和文件,可用如下代码:
import shutil
shutil.rmtree('d:test')
5、遍历目录walk()函数
walk()函数是由os模块提供的。
语法格式:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
其中,top是所要遍历的目录的地址;topdown为可选参数,为 True时自上而下遍历 目录,为False时自下而上遍历目录,默认值为True;onerror为可选参数,用于指定异常处理方式,默认为忽略;followlinks为可选参数,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
该函数的返回值为一个三元组(root,dirs,files)。root 所指的是当前正在遍历的这个文件夹的本身的地址;dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录);files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)。
例:遍历d: est目录及其子目录下的所有子目录和文件:
d: est目录及其下的子目录和文件
import os
path='d:test'
tups=os.walk(path) # 函数walk()的返回值为三元组
for root,dirs,files in tups: # 遍历这个三元组
for name in dirs: #遍历存放目录值的元组
print('dir:',os.path.join(root,name))
for name in files: #遍历存放文件名值的元组
print('file:',os.path.join(root,name))
运行结果如下:
dir: d: est est1
dir: d: est est1 est11
dir: d: est est1新建文件夹
file: d: est est1新建文本文档.txt
file: d: est est1 est11新建文本文档.txt
‘贰’ Python培训课程内容有哪些
以下是Python课程内容:
阶段一:Python开发基础
Python开发基础课程内容包括:计算机硬件、操作系统原理、安装linux操作系统、linux操作系统维护常用命令、Python语言介绍、环境安装、基本语法、基本数据类型、二进制运算、流程控制、字符编码、文件处理、数据类型、用户认证、三级菜单程序、购物车程序开发、函数、内置方法、递归、迭代器、装饰器、内置方法、员工信息表开发、模块的跨目录导入、常用标准库学习,b加密\re正则\logging日志模块等,软件开发规范学习,计算器程序、ATM程序开发等。
阶段二:Python高级级编编程&数据库开发
Python高级级编编程&数据库开发课程内容包括:面向对象介绍、特性、成员变量、方法、封装、继承、多态、类的生成原理、MetaClass、__new__的作用、抽象类、静态方法、类方法、属性方法、如何在程序中使用面向对象思想写程序、选课程序开发、TCP/IP协议介绍、Socket网络套接字模块学习、简单远程命令执行客户端开发、C\S架构FTP服务器开发、线程、进程、队列、IO多路模型、数据库类型、特性介绍,表字段类型、表结构构建语句、常用增删改查语句、索引、存储过程、视图、触发器、事务、分组、聚合、分页、连接池、基于数据库的学员管理系统开发等。
阶段三:前端开发
前端开发课程内容包括:HTML\CSS\JS学习、DOM操作、JSONP、原生Ajax异步加载、购物商城开发、Jquery、动画效果、事件、定时期、轮播图、跑马灯、HTML5\CSS3语法学习、bootstrap、抽屉新热榜开发、流行前端框架介绍、Vue架构剖析、mvvm开发思想、Vue数据绑定与计算属性、条件渲染类与样式绑定、表单控件绑定、事件绑定webpack使用、vue-router使用、vuex单向数据流与应用结构、vuex
actions与mutations热重载、vue单页面项目实战开发等。
阶段四:WEB框架开发
WEB框架开发课程内容包括:Web框架原理剖析、Web请求生命周期、自行开发简单的Web框架、MTV\MVC框架介绍、Django框架使用、路由系统、模板引擎、FBV\CBV视图、Models
ORM、FORM、表单验证、Django session & cookie、CSRF验证、XSS、中间件、分页、自定义tags、Django
Admin、cache系统、信号、message、自定义用户认证、Memcached、redis缓存学习、RabbitMQ队列学习、Celery分布式任务队列学习、Flask框架、Tornado框架、Restful
API、BBS+Blog实战项目开发等。
阶段五:爬虫开发
爬虫开发课程内容包括:Requests模块、BeautifulSoup,Selenium模块、PhantomJS模块学习、基于requests实现登陆:抽屉、github、知乎、博客园、爬取拉钩职位信息、开发Web版微信、高性能IO性能相关模块:asyncio、aiohttp、grequests、Twisted、自定义开发一个异步非阻塞模块、验证码图像识别、Scrapy框架以及源码剖析、框架组件介绍(engine、spider、downloader、scheler、pipeline)、分布式爬虫实战等。
阶段六:全栈项目实战
全栈项目实战课程内容包括:互联网企业专业开发流程讲解、git、github协作开发工具讲解、任务管理系统讲解、接口单元测试、敏捷开发与持续集成介绍、django
+ uwsgi +
nginx生产环境部署学习、接口文档编写示例、互联网企业大型项目架构图深度讲解、CRM客户关系管理系统开发、路飞学城在线教育平台开发等。
阶段七:数据分析
数据分析课程内容包括:金融、股票知识入门股票基本概念、常见投资工具介绍、市基本交易规则、A股构成等,K线、平均线、KDJ、MACD等各项技术指标分析,股市操作模拟盘演示量化策略的开发流程,金融量化与Python,numpy、pandas、matplotlib模块常用功能学习在线量化投资平台:优矿、聚宽、米筐等介绍和使用、常见量化策略学习,如双均线策略、因子选股策略、因子选股策略、小市值策略、海龟交易法则、均值回归、策略、动量策略、反转策略、羊驼交易法则、PEG策略等、开发一个简单的量化策略平台,实现选股、择时、仓位管理、止盈止损、回测结果展示等功能。
阶段八:人工智能
人工智能课程内容包括:机器学习要素、常见流派、自然语言识别、分析原理词向量模型word2vec、剖析分类、聚类、决策树、随机森林、回归以及神经网络、测试集以及评价标准Python机器学习常用库scikit-learn、数据预处理、Tensorflow学习、基于Tensorflow的CNN与RNN模型、Caffe两种常用数据源制作、OpenCV库详解、人脸识别技术、车牌自动提取和遮蔽、无人机开发、Keras深度学习、贝叶斯模型、无人驾驶模拟器使用和开发、特斯拉远程控制API和自动化驾驶开发等。
阶段九:自动化运维&开发
自动化运维&开发课程内容包括:设计符合企业实际需求的CMDB资产管理系统,如安全API接口开发与使用,开发支持windows和linux平台的客户端,对其它系统开放灵活的api设计与开发IT资产的上线、下线、变更流程等业务流程。IT审计+主机管理系统开发,真实企业系统的用户行为、管理权限、批量文件操作、用户登录报表等。分布式主机监控系统开发,监控多个服务,多种设备,报警机制,基于http+restful架构开发,实现水平扩展,可轻松实现分布式监控等功能。
阶段十:高并发语言GO开发
高并发语言GO开发课程内容包括:Golang的发展介绍、开发环境搭建、golang和其他语言对比、字符串详解、条件判断、循环、使用数组和map数据类型、go程序编译和Makefile、gofmt工具、godoc文档生成工具详解、斐波那契数列、数据和切片、make&new、字符串、go程序调试、slice&map、map排序、常用标准库使用、文件增删改查操作、函数和面向对象详解、并发、并行与goroute、channel详解goroute同步、channel、超时与定时器reover捕获异常、Go高并发模型、Lazy生成器、并发数控制、高并发web服务器的开发等。
‘叁’ python - Poetry介绍
一、简介
Poetry 是一个Python 中的好用的包管理工具。在 Python 中,打包系统和依赖管理非常复杂:一个项目经常要同时创建多个文件,例如:
setup.py
requirements.txt
setup.cfg
MANIFEST.in
Pipfile
基于此, poetry 将所有的配置都放置在一个 toml 文件中,包括:依赖管理、构建、打包、发布等,可谓是简单方便。
二、安装
Poetry 要求 Python 版本为 2.7 或者 3.5+。Poetry 官方提供了一个脚本,可以快速方便地进行安装。
osx / linux / bashonwindows 安装:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -
windows powershell 安装:
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python -
Poetry 会被安装在系统中的如下位置:
$HOME/.local/bin Unix系统
%APPDATA%PythonScripts Windows系统
然后把路径添加到系统变量 PATH 中,即可使用 poetry 命令调用:
poetry --version
卸载:
python install-poetry.py --uninstall
POETRY_UNINSTALL=1 python install-poetry.py
如果你想要改变安装的默认路径,可以设置 POETRY_HOME :
POETRY_HOME=/etc/poetry python install-poetry.py
除了官方的安装脚本,也可以使用 pipx 或者 pip 进行安装:
pipx install poetry
pipx upgrade poetry
pipx uninstall poetry
pip install --user poetry
更新:
poetry self update
三、基础使用
在已有项目中执行:
poetry init
该命令创建了一个pyproject.toml 文件。你可以手动修改 pyproject.toml 文件添加依赖,然后运行:
poetry install
也可以执行 add 命令安装具体某个模块并自动添加到 pyproject.toml:
$ poetry add xxxx
默认情况下,poetry会在 {cache-dir}/virtualenvs 下创建虚拟环境,你也可以手动修改该配置项,或者在 pyproject.toml 配置[virtualenvs.in-project] 在你的项目目录中创建虚拟环境。
你可以使用 run 命令在虚拟环境中运行脚本:
poetry run python your_script.py
或者直接激活你的虚拟环境,新建一个 shell 运行:
poetry shell
只安装dependencies :
poetry install --no-root
更新所有锁定版本的依赖:
poetry update
四、命令选项
全局选项:
--verbose (-v|vv|vvv): "-v" 正常输出, "-vv" 详细输出 "-vvv" debug
--help (-h) : 帮助信息
--quiet (-q) : 不输出任何信息
--ansi: 强制 ANSI 输出
--no-ansi: 禁止ANSI 输出
--version (-V): 显示版本
--no-interaction (-n): 禁止交互询问
NEW:
poetry new my-package
创建项目模板,项目结构如下所示:
my-package
├── pyproject.toml
├── README.md
├── my_package
│ └── init .py
└── tests
└── init .py
init:创建pyproject.toml文件 。
install:读取pyproject.toml并安装依赖,它具有如下这些选项:
--without: 忽略依赖
--with: 安装可选的依赖
--only: 只安装指定的依赖
--default: 只安装默认的依赖
--sync: 同步锁定的版本至环境中
--no-root: 不安装根依赖包
--dry-run: 输出操作但不执行
--extras (-E): 安装额外的包
update:升级包
poetry update
不指定任何包时,更新所有,也可以指定升级包:
poetry update requests toml
它具有如下选项:
--dry-run : 输出操作但不执行
--no-dev : 不按照开发依赖
--lock : 只更新锁定不安装
add: 添加依赖并安装
限制范围:
poetry add penlum@^2.0.5
poetry add "penlum>=2.0.5"
它具有如下选项:
--group (-D): 分组
--editable (-e): 添加到编辑模式
--extras (-E): 添加额外的依赖
--optional: 添加至可选依赖
--python: 指定python版本
--platform: 指定操作系统
--source: 使用源名称安装
---allow-prereleases: 接受 prereleases 安装
--dry-run: 输出操作但不执行
--lock: 只更新锁定不安装
remove:移除依赖
它具有如下选项:
--group (-D): 分组
--dry-run : 输出操作但不执行
show:列出所有的可安装的包
如果你想看具体某个包的信息:
poetry show penlum
name : penlum
version : 1.4.2
description : Python datetimes made easy
dependencies:
--without: 忽略依赖
--with: 同时显示
--only: 只显示指定的依赖
--default: 只显示默认的
--no-dev: 不显示开发的依赖
--tree: 以树状形式显示
--latest (-l): 展示最新的版本
--outdated (-o): 显示最新版本,但仅适用于过时的软件包
build:构建
publish:发布
config:配置项
使用方法:
poetry config [options] [setting-key] [setting-value1] ... [setting-valueN]
它具有如下选项:
--unset: 删除配置项
--list: 展示现在的配置
run:在虚拟环境中执行命令
shell:激活虚拟环境
check:检查pyproject.toml文件
search:搜索远程包
lock:锁定版本
version:显示版本
export:导出锁定的文件为其他的格式
poetry export -f requirements.txt --output requirements.txt
它具有如下选项:
--format (-f): 转换的格式,暂时只支持requirements.txt
--output (-o): 输出文件名字
--dev: 包括开发的依赖
--extras (-E): 额外的依赖
--without-hashes: 忽略哈希
--with-credentials: 包括合格证书
env:与虚拟环境进行交互
cache:缓存
显示缓存列表:
poetry cache list
清除缓存:
poetry cache clear pypi --all
plugin:插件
安装插件:
poetry plugin add poetry-plugin
显示插件列表:
poetry plugin show
移除插件:
poetry plugin remove poetry-plugin
source: 仓库源
添加源:
poetry source add pypi-test https://test.pypi.org/simple/
显示仓库源列表:
poetry source show
移除:
poetry source remove pypi-test
五、配置
你可以运行config命令进行配置,或者直接修改config.toml文件,这个文件通常位于:
macOS: ~/Library/Application Support/pypoetry
Windows: C:Users<username>AppDataRoamingpypoetry
Unix~/.config/pypoetry
可以使用--local命令对具体项目进行配置:
poetry config virtualenvs.create false --local
配置项:
cache-dir缓存目录
installer.parallel并行安装
virtualenvs.create如果不存在,则新建一个虚拟环境
virtualenvs.in-project在项目根目录创建虚拟环境
virtualenvs.path虚拟环境路径
virtualenvs.options.always-复制源文件还是创建链接到虚拟环境
virtualenvs.options.system-site-packages虚拟环境获得系统包的权限
repositories.<name>设置一个新的可选仓库
六、依赖配置
依赖的配置有很多种写法:
版本限制:
尖括号:^1.2 代表 >=1.2.0 <2.0.0
波浪号:~1.2.3 代表 >=1.2.3 <1.3.0
星号:1.* 代表 >=1.0.0 <2.0.0
使用git仓库:
[tool.poetry.dependencies]
requests = { git = " https://github.com/requests/requests.git " }
使用本地路径:
[tool.poetry.dependencies]
my-package = { path = "../my-package/", develop = false }
my-package = { path = "../my-package/dist/my-package-0.1.0.tar.gz" }
使用URL:
[tool.poetry.dependencies]
my-package = { url = " https://example.com/my-package-0.1.0.tar.gz " }
python限制:
[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", python = "~2.7" }
环境限制:
[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", markers = "python_version ~= ƈ.7' or sys_platform == 'win32'" }
组合:
[tool.poetry.dependencies]
foo = [
{version = "<=1.9", python = "^2.7"},
{version = "^2.0", python = "^3.4"}
]
如果限制很多,写成一行不方便阅读,可以写成多行:
[tool.poetry.group.dev.dependencies]
black = {version = "19.10b0", allow-prereleases = true, python = "^3.6", markers = "platform_python_implementation == 'CPython'"}
写成多行后:
[tool.poetry.group.dev.dependencies.black]
version = "19.10b0"
allow-prereleases = true
python = "^3.6"
markers = "platform_python_implementation == 'CPython'"
分组功能:
[tool.poetry.group.test.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
例如以上,就建立了一个test的组合的依赖。
下面这两种写法是等价的:
[tool.poetry.dev-dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
或者:
[tool.poetry.group.dev.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
以上两种写法都声明了一个dev的组的依赖。
声明组合是可选的,这在具体的环境中有的特定的用途时很有用:
[tool.poetry.group.docs]
optional = true
[tool.poetry.group.docs.dependencies]
mkdocs = "*"
添加依赖到组中:
poetry add pytest --group test
同步依赖,只使用poetry.lock中的依赖,移除其他不是必须的依赖:
poetry install --sync
七、环境管理
Poetry可以为项目使用独立的虚拟环境,而不是使用系统安装的。
切换环境:
poetry env use /full/path/to/python
poetry env use python3.7
poetry env use system
显示当前激活的环境信息:
poetry env info
运行命令会输出如下信息:
Virtual environment
Python: 3.7.1
Implementation: CPython
Path: /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid: True
System
Platform: darwin
OS: posix
Python: /path/to/main/python
列出所有的虚拟环境列表:
poetry env list
删除环境:
poetry env remove /full/path/to/python
poetry env remove python3.7
poetry env remove 3.7
poetry env remove test-O3eWbxRl-py3.7
‘肆’ 你都用Python 来做什么
当我知道可以做这些之后,我特别想会。因为论文查阅、答案确认查询;想知道豆瓣8分以上电影,或者穿越类的电影、处理工资数据考核表等。
可以干什么
1、上学吧答案神器 主要实现的是无限制获取上学吧网站上的题目答案(绕过 IP 限制),并实现了自动识别验证码,只用输入某个题目的网址,即可一键获取答案,速度非常快。“想要哈哈,自己或者给孩子辅导作业必备啊?”
2、抓取某系统内全部学生姓名学号及选课信息
3、扫描研究生系统上的弱密码用户、模拟登录图书馆系统并自动续借
4、给钓鱼网站批量提交垃圾信息 经常会收到含有钓鱼网站链接的短信的,一般都是盗取 QQ 密码的偏多,其实可以使用 Python 来批量给对方的服务器提交垃圾数据(需要先抓包),这样骗子看到信息之后就不知道哪些是真的哪些是假的了,说不定可以解救一部分填了密码的同学。
5、网易云音乐批量下载 可以批量下载网易云音乐热歌榜的歌曲,可以自己设定数量,速度非常快。
6、批量下载读者杂志某一期的全部文章
7、 获取城市PM2.5浓度和排名
8、爬取某网商品价格信息
你都用 Python 来做什么?
那Python 作为一种功能强大的编程语言,因其简单易学而受到很多开发者的青睐。那么,Python 的应用领域有哪些呢?
Python 的应用领域非常广泛,几乎所有大中型互联网企业都在使用 Python 完成各种各样的任务,例如国外的 Google、Youtube、Dropbox,国内的网络、新浪、搜狐、腾讯、阿里、网易、淘宝、知乎、豆瓣、汽车之家、美团等等。概括起来,Python 的应用领域主要有如下几个。
Web应用开发
Python 经常被用于 Web 开发,尽管目前 PHP、JS 依然是 Web 开发的主流语言,但 Python 上升势头更劲。尤其随着 Python 的 Web 开发框架逐渐成熟(比如 Django、flask、TurboGears、web2py 等等),程序员可以更轻松地开发和管理复杂的 Web 程序。例如,通过 mod_wsgi 模块,Apache 可以运行用 Python 编写的 Web 程序。Python 定义了 WSGI 标准应用接口来协调 HTTP 服务器与基于 Python 的 Web 程序之间的通信。举个最直观的例子,全球最大的搜索引擎 Google,在其网络搜索系统中就广泛使用 Python 语言。另外,我们经常访问的集电影、读书、音乐于一体的豆瓣网(如图 1 所示),也是使用 Python 实现的。
图2Python开发的游戏
除此之外,Python 可以直接调用 Open GL 实现 3D 绘制,这是高性能游戏引擎的技术基础。事实上,有很多 Python 语言实现的游戏引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。以上也仅是介绍了 Python 应用领域的“冰山一角”,例如,还可以利用 Pygame 进行游戏编程;用 PIL 和其他的一些工具进行图像处理;用 PyRo 工具包进行机器人控制编程,等等。有兴趣的读者,可自行搜索资料进行详细了解。