标题
这是第一次在博客园里用markdown编辑器
import os
prinit.os.path(path)
os 模块用于和操作系统进行交互
import os
# os.mkdir()方法:创建一个目录
# os.mkdir(path,mode)
# os.mkdir(r"c:\tttt")
# os.mkdir(r"y:\tttt") # FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'y:\\tttt'
try:
os.mkdir(r"y:\tttt")
except FileNotFoundError:
print("你指的盘符不存在!!!")
# os.mkdir(r"c:\yyyy\uuuuu") # FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'c:\\yyyy\\uuuuu'
try:
os.mkdir("c:\yyy",mode=1777)
except FileExistsError:
print("文件已存在,无法创建该文件")
# 结论: os.mkdir(path,mode)方法,可以授受两个参数,第一个参数是目录,第二个参数是文件模式即权限,在windows上忽略,
# 不能实现级联方式创建目录,且 目录已存在,或者 盘符不存在,都会抛错
# os.rmdir(path) 通过目录路径,移除一个目录(该目录,必须是空目录)
try:
os.rmdir(r"c:\yyy")
except FileNotFoundError:
print("系统找不到指定文件")
except OSError:
print("目录不是空的")
# print(os.getenv("path"))
# # os.fdopen()
# import io
# # io.open()
#
# fd = io.open(r"c:\yyy\dir.txt")
# print(fd.read())
# os.remove(r"c:\yyy\dir.txt") # 移除指定文件
# os.makedirs(r"c:\yyy\ttt\eee") # 级联方式创建目录
list1 = os.listdir(r"c:\yyy") # 返回一个目录下 的文件列表
print(list1) # ['tt.txt', 'ttt'] 不能递归
fobj = os.fspath(r"c:\yyy")
print(fobj,type(fobj))
# fd = open(r"c:\yyy\ttt\ee.txt")
# try:
# os.removedirs(r"c:\yyy")
# except OSError:
# print("OSError: [WinError 145] 目录不是空的。: 'c:\\yyy'")
# os.walk()
"""Directory tree generator.
For each directory in the directory tree rooted at top (including top
itself, but excluding '.' and '..'), yields a 3-tuple
dirpath, dirnames, filenames
"""
file_path = r"c:\yyy" # 路径字符串,前后,不有有空格
# print(os.popen("tree "+ file_path + "/F").read())
# 卷 OS 的文件夹 PATH 列表
# 卷序列号为 76B6-90BF
# C:\YYY
# │ tt.txt
# │
# └─ttt
# │ ee.txt
# │
# └─eee
# hh.txt
generator = os.walk(file_path) # 路径字符串,前后,不有有空格,否则迭代的时候,会报错
print(generator.__next__()) # ('c:\\yyy', ['ttt'], ['tt.txt'])
print(generator.__next__()) # ('c:\\yyy\\ttt', ['eee'], ['ee.txt'])
print(generator.__next__()) # ('c:\\yyy\\ttt\\eee', [], ['hh.txt'])
# print(generator.__next__()) # StopIteration
# os.removedirs()
# os.removedirs(r"c:\yyy") # 级联删除目录,但每级目录要为空
filepath = r"C:\Users\jiayong\PycharmProjects\knight_schema\day23模块\os_module.py"
tu = os.path.split(filepath) //返回一个元组,第一个元素目录,第二个元素文件,实际原理,是从右向左,以路径分隔符,来
//分隔路径字符串,最大分隔tu 1 个。
ret = filepath.rsplit("\\",1) # 返回的是一个列表
print(tuple(ret))
print(tu)
filepath1 = "c:\yyy"
print(os.path.dirname(filepath1)) # c:\yyy 返回上级目录
print(os.path.basename(filepath1)) # 返回最后一个路径分隔符右边的文件
print(os.path.isfile(filepath1)) # 是
print(os.path.isdir(filepath1))
print(os.path)
path1 = r"c:\win\xx"
path2 = r"c:\win\bb"
print(os.path.join(path1, path2)) # c:\win\bb 当有多个绝对路径时,以最后个绝路径为准,前面的绝对路径参数忽略
print(os.path.join(path1, path2,"www\ccc\www")) # c:\win\bb\www\ccc\www 当有多个绝对路径时,以最后个绝路径为准,前面的绝对路径参数忽略
print(os.path.abspath(r"www\bbb\cc")) # 如果路径是相对路径,以当前工作目录为基目录,进行目录串的拼接
print(os.path.abspath(r"d:\www\bbb\cc")) # d:\www\bbb\cc
print(os.path.abspath(r"d:/www/bbb/cc")) # d:\www\bbb\cc 规范化目录格式,将路径分隔符,转换为跟平台一致的
string = f"ii"
print(string)
print(dir(string))
print(help(str))
print(help(str.lower))
内容补充 f字符串的作用,python3.6的新特性
greeting = "Hello"
name = "Chris"
message = f'{greeting},{name}欢迎来到!!'
print(message)
更强的是,在此基础上,还可以加入额外的处理函数
msg = f'{greeting.swapcase()},{name.upper()}欢迎来焦点访谈!!!'
print(msg)
sys模块
import sys
print(sys.argv) # 命令行参数,argv[0] 是脚本文件
print(sys.path)
一个模块能否被导入,就看这个模块所在的目录在不在sys.path路径中
内置模块和第三方扩展模块都不需要我们处理sys.path就可以直接使用
自定义的模块的导入工作需要自己手动的修改sys.path