#16 os&sys模块
前言
在编写Python程序的时候,可能需要和操作系统进行交互,比如获取某个目录下的内容、更改运行目录、更改环境变量等操作。在Python中有两个模块将这些问题完美解决,一起看看哇!
一、os模块
os模块提供一个和操作系统的接口,想要完全了解它,需要查看它的官方文档:https://docs.python.org/3.5/library/os.html
这里列出一些常用的方法:
- In [3]: import os # 导入os模块
- In [4]: os.sep # 该操作系统特定的路径分隔符
- Out[4]: '/'
- In [5]: os.linesep # 该操作系统的行分隔符
- Out[5]: '\n'
- In [6]: os.pathsep # 该操作系统用于分割文件的分隔符
- Out[6]: ':'
- In [7]: os.name # 返回当前系统所使用的平台(win返回nt,linux返回posix
- Out[7]: 'posix'
- In [8]: os.environ # 输出系统环境变量
- In [9]: import os
- In [10]: os.getcwd() # 获取当前工作目录
- Out[10]: '/Users/minutesheep'
- In [11]: os.pardir # 输出上级目录 '..'
- Out[11]: '..'
- In [12]: os.curdir # 输出当前目录 '.'
- Out[12]: '.'
- In [13]: os.mkdir('test') # 创建一个文件夹,只能创建一个
- In [15]: os.makedirs('test1/test2/test3') # 递归创建文件夹
- In [16]: os.listdir() # 列出当前目录所有文件
- In [17]: os.rmdir('test') # 删除一个空文件夹,只能删除一个
- In [19]: os.removedirs('test1/test2/test3') # 递归删除空文件夹,如果上级文件夹也为空,也删除
- In [20]: os.chdir('..') # 改变工作目录
- In [21]: os.getcwd() # 可以看到改变了
- Out[21]: '/Users'
- In [24]: os.system('touch test.py') # 执行系统命令,这里创建一个新的文件,成功则返回0
- Out[24]: 0
- In [26]: os.stat('test.py') # 查看文件状态
- Out[26]: os.stat_result(st_mode=33188, st_ino=2252266, st_dev=16777223, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1549423963, st_mtime=1549423963, st_ctime=1549423963)
- In [27]: os.rename('test.py','new.py') # 对文件改名
- In [28]: os.remove('new.py') # 删除一个文件
- In [29]: import os
- In [30]: os.system('touch test.py') # 创建一个新文件用于操作
- Out[30]: 0
- In [31]: os.mkdir('test') # 创建一个文件夹用于操作
- In [34]: abspath = os.path.abspath('test.py') # 返回文件的绝对路径
- In [35]: abspath
- Out[35]: '/Users/minutesheep/test.py'
- In [37]: os.path.split(abspath) # 将一个文件的绝对路径分隔为元组形式,一个是目录,一个是文件名
- Out[37]: ('/Users/minutesheep', 'test.py')
- In [38]: os.path.dirname(abspath) # 返回路径的上级目录
- Out[38]: '/Users/minutesheep'
- In [39]: os.path.basename(abspath) # 返回文件名,如果路径以/结尾,则返回空
- Out[39]: 'test.py'
- In [40]: os.path.exists(abspath) # 判断路径是否存在
- Out[40]: True
- In [41]: os.path.isabs(abspath) # 判断路径是否为绝对路径
- Out[41]: True
- In [42]: os.path.isfile(abspath) # 判断路径是否为文件
- Out[42]: True
- In [43]: os.path.isdir('test') # 判断路径是否为文件夹
- Out[43]: True
二、sys模块
想要完全了解它,请查看其官方文档:< a href="https://docs.python.org/3.5/library/sys.html">https://docs.python.org/3.5/library/sys.html
这里只记录一些常用方法:
- In [1]: import sys # 导入sys模块
- In [2]: sys.argv # 输出命令行参数列表,第一个元素为当前程序本身
- Out[2]: ['/Users/minutesheep/.pyenv/versions/3.5.2/bin/ipython']
- In [3]: sys.version # 输出Python版本
- Out[3]: '3.5.2 (default, Feb 3 2019, 22:37:21) \n[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.10.44.4)]'
- In [4]: sys.path # 输出模块的搜索路径,这个是最常用的!
- In [5]: sys.platform # 返回操作系统平台名称
- Out[5]: 'darwin'
三、项目目录树架构
在写一个项目时,不可能只有一个程序文件,往往含有许多个不同的程序文件,这些程序文件不能都放在同一个文件夹,需要对这些文件进行归类整理。通常一个项目有可执行文件、测试文件、源代码文件、配置文件、日志文件、读我文件,这些文件应当有详细的分类,建议大家整理成如下目录树结构:
- # 以SpeakLanguage项目为例:
- SpeakLanguage # 项目名
- ├── README # 读我文件
- ├── bin # 执行目录
- │ └── speak.py # 执行文件
- ├── conf # 配置文件目录
- │ ├── conf1.cfg # 配置文件1
- │ └── conf2.cfg # 配置文件2
- ├── log # 日志目录
- │ └── log.log # 日志
- ├── requirements.txt # 本项目需要的模块
- └── speak_language # 源代码目录,通常与项目名相同
- ├── chinese.py # 源代码1
- ├── english.py # 源代码2
- ├── main.py # 源代码入口
- └── test # 测试目录,里面含有测试文件
- # bin/speak.py
- import os
- import sys
- BASE_DIR = os.path.dirname(os.path.dirname(
- os.path.abspath(__file__))) # 获取项目目录
- sys.path.append(BASE_DIR) # 将项目目录添加到模块的搜索列表里
- if __name__ == '__main__':
- from speak_language.main import run # 从源代码入口程序main.py中导入run方法
- run() # 执行
- # speak_language/chinese.py
- def chinese():
- print('我是小绵羊')
- # speak_language/english.py
- def english():
- print('I am MinuteSheep')
- # speak_language/main.py
- from speak_language import chinese
- from speak_language import english
- def run():
- chinese.chinese()
- english.english()
- # requirements.txt
- 将需要的安装的模块列在此文件中
- # README
- 程序说明:
- xxxxxxxxxxx
- xxxxxxxxxxx
- xxxxxxxxxxx
- --------------------------
- 项目环境介绍:
- xxxxxxxxxxx
- xxxxxxxxxxx
- xxxxxxxxxxx
- --------------------------
- 需要的模块:
- xxxxxxxxxxx
- xxxxxxxxxxx
- xxxxxxxxxxx
- --------------------------
- 项目目录树:
- xxxxxxxxxxx
- xxxxxxxxxxx
- xxxxxxxxxxx
- --------------------------
- 作者:MinuteSheep
- 联系方式:xxxxxx
- # 执行结果
- 我是小绵羊
- I am MinuteSheep
#16 os&sys模块的更多相关文章
- python笔记-1(import导入、time/datetime/random/os/sys模块)
python笔记-6(import导入.time/datetime/random/os/sys模块) 一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...
- python 常用模块之random,os,sys 模块
python 常用模块random,os,sys 模块 python全栈开发OS模块,Random模块,sys模块 OS模块 os模块是与操作系统交互的一个接口,常见的函数以及用法见一下代码: #OS ...
- python笔记-6(import导入、time/datetime/random/os/sys模块)
一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内容待日后有深入理解了再来细说 1.import可以导入的两种不同的内容 1.1 *.py文件结尾的文件 ...
- (转)python之os,sys模块详解
python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...
- python学习之路-6 冒泡算法、递归、反射、os/sys模块详解
算法 冒泡算法 # 冒泡算法就是将需要排序的元素看作是一个个"气泡",最小的"气泡"最先浮出水面,排在最前面.从小到大依次排列. # 代码如下: li = [9 ...
- Day 4-3 os & sys模块
常用方法: import os os.getcwd() # 获取当前程序的工作路径(python解释器的运行路径,不是脚本所在的路径.) os.listdir() # 获取当前程序根目录下的所有文件夹 ...
- 10 python os&sys 模块
1.os模块 os模块提供了很多允许你的程序与操作系统直接交互的功能 os模块的主要功能:处理文件和目录,系统相关,执行命令,管理进程 检验给出的路径是否是一个文件:os.path.isfile() ...
- 小白的Python之路 day5 os,sys模块详解
os模块详解 1.作用: 提供对操作系统调用的接口 2.常用方法: os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径os.chdir("dirname" ...
- Python OS & sys模块
os模块(* * * *) os模块是与操作系统交互的一个接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname" ...
随机推荐
- 设置DataGridView中表头颜色
默认的DataGridView表头颜色实在不是太好看,想设置下,上google搜了一通, 都说这样设置 this.dataGridView1.ColumnHeadersDefaultCellStyle ...
- RQNOJ 3 Jam的计数法
一道模拟题,用的vector比用链表要方便很多,毕竟不需要自己写,因为是递增的,所以每一次你都要去检查最后一位加1之后有没有越界,如果没越界你就可以把他当前的字符删掉替换成他下一位的字符就可以了,如果 ...
- 决策树模型组合之随机森林与GBDT(转)
版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...
- Oracle数据库查询基本数据
------------------------------------------------------------------找出EMP表select * from EMP;--选择在部门30中 ...
- 端口转发工具lcx使用两类
lcx是一款强大的内网端口转发工具,用于将内网主机开放的内部端口映射到外网主机(有公网IP)任意端口.它是一款命令行工具,当然也可以在有权限的webshell下执行,正因如此lcx常被认为是一款黑客入 ...
- Android 页面跳转之生命周期调用顺序问题
Android Activity 常用技巧 Android Activity 启动模式和任务栈 Android 页面跳转之生命周期调用顺序问题 一.页面跳转逻辑分析 1.1 跳转逻辑分析 Androi ...
- JSP标准标签库:JSTL
JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能. jstl出现的目的同el一样也是要代替jsp页面中的脚本代码. ...
- [Mac]macOS Mojave :发现 Mac 的新功能。
1.深色模式 换种颜色看 Mac “深色模式”为桌面和内建应用带来更生动的外观,可让您轻松专注于最重要的内容. 若要在浅色和深色外观之间切换,请打开“系统偏好设置”并点按“通用”. 2.叠放 整理桌面 ...
- Python编程语言基础
今天给大家讲解python语言基础~~ 01.python核心数据类型 整型数 int:整数是不带有小数部分的数字 浮点型数 float:浮点数是带有小数部分的数字(小数部分可以是0) 复数 co ...
- Java诊断工具
官方文档:Arthas(阿尔萨斯) 1. 安装成功后通过 arthas 命令使用 arthas软件 进入后显示服务器正在运行的Java进程: 2. help显示 atrhas 的功能列表