#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" ...
随机推荐
- 黑马java课程2222
课程叫做27天学通java零基础 java 安装: 必须装jdk-7u72-windows-i586.exe 注意必须安装32位的就是i586这个.因为x64的不向下兼容.会有意向不到的bug 配置P ...
- python 常用知识点
1,字典get用法 如果key没有值,返回一个None >>> dic = {'k1':'v1','k2':'v2','k3':'v3'} >>> dic.get( ...
- selenium之生成html测试报告--testng.xsl
自制版制作步骤: 1.首先下载一个文件名为testng.xslt-1.1.zip testng.xslt-1.1我在印象笔记里面备份了一份 打开testng.xslt中lib文件夹,找到saxon-8 ...
- Delphi fmx控件在手机滑动与单击的问题
Delphi fmx控件在手机滑动与单击的问题 (2016-03-08 10:52:00) 转载▼ 标签: it delphi 分类: Delphi10 众所周知,fmx制作的app,对于象TEdit ...
- EF db first 获取表名称
一直以来,使用DB FIRST的方式,想得到表名,最后一直不得其法.直到昨天晚上,反编译自己的程序集的时候,突然发现EF表结构和数据实体类的映射关系存在什么地方.然后就有了这篇文章. 咱们一步步来. ...
- 日志查看技巧之筛选&去重[排查篇]
引语:相信大家都会偶尔遇到要排查问题发生的原因的情况,那这种时候,我们最有力后盾就是日志文件了,所以谨记日志记录真的很重要.但是日志文件往往是很大的文件,而且里面有太多的东西可能不是我们需要的,如无数 ...
- ElasticSearch5.0之后的改变
ES5的变化 search_type=count和scan都移除了 count可以用size=0代替 GET /my_index/_search { "size": 0, &quo ...
- java相关技术问答(二)
String为什么是final的 首先是为了安全性,final表示不可变,不可被继承,不能修改其方法保证安全 在多线程环境下,final类型的String保证线程安全 String支持字符串常量池,相 ...
- Kubernetes-2--安装部署
kubernetes的部署方式: 1,kubeadm 2, 二进制安装包部署 条件准备: 1,关闭系统的swap分区 为什么要关闭swap分区,我还没有去看官方的说明,搜索到的答案是 kubernet ...
- MySQL 线程池&连接池&长连接&短连接
线程池 简介 1.mysql每连接每线程,mysql都分配一个单独的线程,该线程处理客户端发来的所有命令 2.每个线程会占用一定的系统资源,线程数越多消耗的系统资源也越多 3.线程的创建和销毁有一定的 ...