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)