python的os模块和sys模块 - baibing0716/python GitHub Wiki
一、 os模块------处理文件和目录
(1) 目录设置
os.getcwd() # 获取当前的工作目录
os.chdir("新路径") # 切换当前的工作目录到新路径
os.curdir() # 获取当前目录 .
os.pardir() # 获取当前目录的上一级目录 ..
os.listdir("./tmp/home/monthly/") # 查看指定文件夹下【文件或文件夹列表】不包括. 和 ..
os.mkdir("./tmp", 0777) # 只能创建单级目录
os.makedirs("./tmp/home/monthly/", 0777, exist_ok=Fasle) # 创建多级目录 如果目录存在,exist_ok=Fasle触发异常,exist_ok=True什么也不产生
os.removedir("./tmp/home/monthly/") # 删除当前目录下的某个目录
os.removedirs("./tmp/home/monthly/") # 递归删除多级目录
os.rename(src, dst) # 【重命名文件或目录】 os.rename("test","test2")
os.renames(old, new) # 【递归重命名目录或文件】 os.renames("aa1.txt","newdir/aanew.txt")
os.listdir("./tmp/home/monthly/") # 获取指定目录下文件夹和文件
os.path.lexists("./tmp/home/monthly/") # 判断目录是否存在
os.path.isdir("./tmp/home/monthly/") # 判断是否为目录
os.path.isabs("./tmp/home/monthly/") # 判断是否为绝对路径
os.stat('path/filename') # 获取文件/目录信息
(2) 文件设置
----------------------------------------------------------------------------------------------------------------
// os.walk() 以传入的参数path为起点,得到这个起点路径(root),这个起点下的所有的文件夹list(dirs),这个起点下的所有的文件list(files)
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
(1)root 所指的是当前正在遍历的这个文件夹的本身的地址
(2)dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
(3)files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。
followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
for root, dirs, files in os.walk(".", topdown=False):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name))
----------------------------------------------------------------------------------------------------------------
(3)路径操作
name = os.path.join('mypath','csvfolder','3.csv') # 拼接路径和文件名 mypath\csvfolder\3.csv
os.path.split("./tmp/home/monthly/1.txt") # 分割路径和文件名 分割后 ('/tmp/home/monthly', '1.txt')
os.path.basename("./tmp/home/monthly/1.txt") # 路径名
os.path.abspath("./tmp/home/monthly/1.txt") # 获取绝对路径 True False
os.path.splitext("./tmp/home/monthly/1.txt") # 分离文件拓展名 分割后(('/tmp/home/monthly/1', '.txt'))
(3) 环境变量操作
os.envior # 返回值为包含所有环境变量的dictionary
os.envior.get(key[, default) # 获取指定环境变量的值
os.envior.set(key[, default) # 设置指定环境变量的值,若key不存在,则会自动添加
(4) 调用shell命令
os.system(cmd) # 调用Shell的cmd
os.popen(cmd).read() # 调用Shell的cmd并保存执行结果
(5) 系统特定符合
os.sep # 查系统特定的路径分隔符,win下为"\\"; Linux下为"/"
os.name # 查看字符串指示当前使用平台.win->'nt'; Linux->'posix'
os.linesep # 查看平台使用的行终止符,win下为"\t\n"; Linux下为"\n"
ps.pathsep # 查看当前,用于分割文件路径的字符串
二、 sys模块
sys.arg # 获取命令行参数列表【第一个元素是程序本身】 sys.arg[1] 表示输入的一个参数
sys.exit(n) # 退出Python程序,exit(0)表示正常退出,当参数非0时,会引发一个SystemExit异常,可以在程序中捕获异常
sys.version() # 获取当前Python解释器版本
sys.copyright() # 获取当前Python的版权信息
sys.modules # 以dictionary的方式返回Python环境中导入的模块
sys.builtin_moudle_names # 返回一个列表,包含所有已经编译到Python解释器里的模块
sys.platform # 返回OS的平台名称
sys.getwindowsversion() # 返回windows系统信息
sys.implementation # 当前Python解释器是哪一种 CPython、JPython等中的一个
sys.getdefaultencoding() # 获取系统当前编码,默认为utf-8
sys.setdefaultencoding() # 设置系统当前编码
sys.getfilesystemencoding() # 获取文件系统的编码方式
sys.stdin、sys.stdout、sys.stderr # 输入、输出、错误相关
sys.exc_info() # 返回异常信息三元组
-----------------------------------系统限制值------------------------------------
sys.maxsize # int的最大值
sys.path # 返回模块的搜索路径,初始化使用PYTHON的环境变量
sys.flags # 命令行标识状态信息列表
sys.getrecursionlimit() # 返回Python最大递归深度,默认1000
sys.getrefcountobject() # 返回对象的引用数量
sys.getsizeof(object, default) # 返回对象的大小
-----------------------------------系统限制值------------------------------------
-----------------------------------线程属性值------------------------------------
sys.thread_info # 当前线程信息
sys.getswitchinterval() # 返回线程切换时间 默认 0.005s
sys.setswitchinterval(interval) # 设置线程切换时间间隔 单位s
-----------------------------------线程属性值------------------------------------
三、实现进度条的范例
import sys
import time
def view_bar(num,total):
rate = num / total
rate_num = int(rate * 100)
r = '\r%s%d%%' % (">"*num,rate_num)
sys.stdout.write(r)
sys.stdout.flush()
if __name__ == '__main__':
for i in range(0, 100):
time.sleep(0.1)
view_bar(i, 100)