一、os模块

os.getcwd()  获取当前的工作目录

os.chdir('绝对路径/相对于当前工作目录的路径')  改变工作目录,相当于shell的cd命令,例如Windows平台下os.chdir(r'D:\PythonScripts\test\c'),磁盘那一层必须用双斜线分割,其他层级的双斜线和单斜线都可,在linux和unix平台下用/分割

os.curdir  返回当前路径 .

os.pardir  返回当前路径的上一层路径,即 ..

os.mkdir('dir')  生成单级目录

os.makedirs(r'dir1\dir2') 创建递归目录,不加绝对路径表示在当前工作目录下创建

os.rmdir('dir')  删除单级空目录,如果目录不为空无法删除

os.removedirsr('dir1\dir2')  若目录为空则删除,并递归到上一层目录,若上一层为空也删除,以此类推

os.listdir(dir)  列出指定目录下的所有一级文件和目录,并以列表形式打印

os.remove('file')  删除一个文件

os.rename('oldname','newname')  重命名文件或目录

os.listdir('dir')以列表形式列出dir目录下所有的文件和目录

os.stat('file'/'dir')  获取文件/目录的大小,链接数,创建时间,上一次修改、访问时间等信息

os.sep  获取当前环境的分隔符

os.linesep  获取当前环境的换行符,windows下为/r/n,linux下为/n

os.pathsep  获取当前环境分割文件路径的字符串,windows下为;,linux下为:

os.name  获取当前使用平台,windows为nt,linux为posix

os.environ 获取系统环境变量

os.system(shell command)  运行shell命令,返回执行状态码,执行结果显示到屏幕

os.path.abspath(path)  返回绝对路径

os.path.split(path)  将path分割成目录和文件名的两个元素的元组

os.path.dirame(path)  返回path的目录,相当于os.path.split(path)的第一个元素

os.path.basename(path)  返回path最后的文件名,如果path以/或\结尾则返回空值,即os.path.split(path)的第二个元素

os.path.exists(path)  如果path存在则返回True,否则返回False

os.path.isabs(path)  如果path是绝对路径则返回True,否则返回False

os.path.isfile(path)  如果path是一个存在的文件则返回True,否则返回False

os.path.isdir(path)   如果path是一个存在的目录则返回True,否则返回False

os.path.join(path1[,path2[,path3…]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

os.path.getatime(path)  获取path所指向的文件或者目录的最后访问时间

os.path.getmtime(path)  获取path所指向的文件或者目录的最后修改时间

二、os模块中的os.walk()函数

os.walk('path')函数对于每个目录返回一个三元组,(dirpath, dirnames, filenames),

第一个是路径,第二个是路径下面的目录,第三个是路径下面的文件

如果加参数topdown=False则表示自下而上进行遍历,默认为topdown=True即自上而下进行遍历

#对于上述结构,os.walk()的结果为
['dir', ['dir1', 'dir2'], ['file1.txt', 'file2.txt']]
['dir\\dir1', ['dir11', 'dir12'], []]
['dir\\dir1\\dir11', [], ['file111.txt']]
['dir\\dir1\\dir12', [], []]
['dir\\dir2', ['dir21'], ['file21.txt']]
['dir\\dir2\\dir21', [], []] #可通过如下脚本验证
import sys
l=[]
for root,dirs,files in os.walk('dir'):
l.append(root)
l.append(dirs)
l.append(files)
print(l)
l=[]

结果分析

1.先以给定的目录作为根目录进行遍历,读取根目录的文件夹和文件

2.以根目录下子目录为新的根目录进行遍历,读取其下面的文件夹和文件

3.再以2中得到的子目录为根目录进行遍历,读取其下面的文件夹和文件

4.重复3,直至所有子目录下面没有子目录和文件

三、sys模块

sys.path  获取python PATH环境变量的值

sys.version  获取python解释器的版本

sys.exit(n)  在程序执行过程中退出程序,正常退出为exit(0)

sys.argv  返回的结果为一个列表且各元素都为字符串,第一个元素为当前执行文件的名称,后面的元素为执行文件时传入的参数,以空格分隔各参数,如果只有空格表示没有参数。

[root@oldboy test]# cat argv.py
import sys
print(sys.argv)
[root@oldboy test]# python argv.py
['argv.py']
[root@oldboy test]# python argv.py 11 '22' [33,44] 'True' {1:'a'}#文件执行时传入的参数不能为元组,否则会报错
['argv.py', '', '', '[33,44]', 'True', '{1:a}']

sys.stdout.write('str')  向屏幕输出,不换行,相当于print,但是print('str')是换行输出

sys.stdout.flush( )  将缓存输出到屏幕

例如通过#逐步打印进度条

import time,sys
for i in range(20):
sys.stdout.write('#') #打印一个#,不换行
time.sleep(0.1) #睡0.1秒再输出下一个#
sys.stdout.flush() #将缓存中的#输出到屏幕,没有这一行系统会等到输出完毕再将缓存中的20个#输出到屏幕
print('')

解析文件执行时输入的参数:optparse模块

import optparse
class ArgvHandle():
def __init__(self):
self.op = optparse.OptionParser()
self.op.add_option('-s','--server',dest = 'server')
#,前面为文件执行时的输入,dest表示参数名。如果文件执行时带有-s或者--server,则形成参数名称为dest指定名称、参数值为-s或者--server后面紧跟着的内容
self.op.add_option('-P','--port',dest = 'port')
self.op.add_option('-u','--username',dest = 'username')
self.op.add_option('-p','--passwort',dest = 'password') option,args = self.op.parse_args()
print(type(option),type(args))
print(option,args)   
 print(option.server,option.port,option.username,option.password)#通过.取参数名对应的值 test = ArgvHandle()

随意输入参数执行结果如下

可知op.parse_args()是将文件执行python mani.py后面的参数分割成两部分,一部分类似字典的形式(实际是一个对象),一部分是一个列表。

如果匹配到add_option定义的参数形式,则将后面紧跟着的输入作为参数的值;未匹配到add_option定义的参数形式的其余输入被整理到一个列表中。

python的os模块和sys模块的更多相关文章

  1. (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...

  2. Python库的使用之-Sys模块

    Python标准库之sys模块使用详解,讲解了使用sys模块获得脚本的参数.处理模块. 使用sys模块操作 模块搜索路径.使用sys模块查找内建模块.使用sys模块查找已导入的模块,重定向输出以及重定 ...

  3. 时间模块之datatime模块、os模块、sys模块、json模块、json模块实操

    目录 一.模块的绝对导入和相对导入 二.包的概念 三.编程思想的转变 四.软件开发目录规范 五.常见的内置模块 一.时间模块之datatime模块 1.datetime.datetime.today( ...

  4. python常用模块之sys模块

    python常用模块之sys模块 1.sys.argv[]:命令行参数List,第一个元素是程序本身 # 写一个简单的python程序,代码如下: #!/usr/bin/python #coding= ...

  5. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  6. Python学习笔记——基础篇【第五周】——os模块和sys模块

    OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录 ...

  7. python中os模块和sys模块的常见用法

    OS模块的常见用法 os.remove()   删除文件 os.rename()   重命名文件 os.walk()    生成目录树下的所有文件名 os.chdir()    改变目录 os.mkd ...

  8. 19 python初学(os 模块,sys 模块,hashlib 模块)

    os 模块: # _author: lily # _date: 2019/1/13 import os print(os.getcwd()) # 得到当前的工作目录 # print(os.chdir( ...

  9. Python之os模块和sys模块

    OS模块:print(os.getcwd())os.chdir('..') #返回上一层目录print(os.getcwd()) os.makedirs('xxxx') #生成多级递归目录os.mkd ...

随机推荐

  1. 小程序中navigator和wx.navigateTo,wx.redirectTo,wx.reLaunch,wx.switchTab,wx.navigateBack的用法

    如果用一句话来表明navigator和API中wx.系列的跳转有什么区别,那就是navigator是在wxml中用标签添加open-type属性来达到和wx.系列一样的效果. navigator的属性 ...

  2. Python面向对象之字段

    类成员: 字段,方法,属性 属性是在一个函数方法前面加一个装饰器,伪造成为一个字段,调用的时候不需要加括号() 目的是把一个方法伪造成为一个字段,属性也是方法的一种,对这个方法进行改造就可以以 字段的 ...

  3. PHP 正则表达式抓取网页内容。

    我想用php抓取爱奇艺生活类型视频网页里面的元素,应该如何去做呢? 首先我要非常熟悉正则表达式,关于正则表达式的学习,我会写一篇博客一直学习的. 直接举例子: 这是一个爱奇艺生活视频的界面的网址 $u ...

  4. Alice, Bob, Oranges and Apples CodeForces - 586E

    E - Alice, Bob, Oranges and Apples CodeForces - 586E 自己想的时候模拟了一下各个结果 感觉是不是会跟橘子苹果之间的比例有什么关系 搜题解的时候发现了 ...

  5. 【转】C#线程篇

    C# 温故而知新: 线程篇(一) C# 温故而知新: 线程篇(二) C# 温故而知新:线程篇(三) C# 温故而知新: 线程篇(四)

  6. MySQL命令:创建数据库、插入数据

    简介: 学习mysql环境为ubantu,下面记录一些基本的创建数据库和插入数据的口令 打开MySQL 服务并使用 root 登录: --打开 MySQL 服务 sudo service mysql ...

  7. 维基百科 请求流 webrequest_flow

    Logstash - Wikitech https://wikitech.wikimedia.org/wiki/Logstash

  8. Making the Grade---poj3666(dp)

    题目链接:http://poj.org/problem?id=3666 题意:有一个n个数的序列a,现在要把这些序列变成单调增的或者单调减的序列 b , 其价值为|A1 - B1| + |A2 - B ...

  9. A Simple Chess---hdu5794(容斥+Lucas)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5794 题意:给你一个n*m的网格,问从(1, 1)走到(n, m)的方案数是多少,其中有r ...

  10. 【python-opencv】18-图像梯度+图像边界

    效果图: *一阶导数与Soble算子 *二阶导数与拉普拉斯算子 定义:把图片想象成连续函数,因为边缘部分的像素值是与旁边像素明显有区别的,所以对图片局部求极值,就可以得到整幅图片的边缘信息了. 不过图 ...