1. #!/usr/bin/env python
  2. # coding=utf-8
  3. __author__ = 'Luzhuo'
  4. __date__ = '2017/5/7'
  5.  
  6. import os
  7.  
  8. def os_demo():
  9.  
  10. # 执行命令
  11. dirs = os.popen("dir").read()
  12. print(dirs)
  13.  
  14. # 打印目录树
  15. dirs_info = os.scandir()
  16. for info in dirs_info:
  17. print("文件名: {}, 路径: {}, inode: {}, 文件夹? {}, 文件? {}, 链接? {}".format(info.name, info.path, info.inode(), info.is_dir(), info.is_file(), info.is_symlink()))
  18. stats = info.stat()
  19. print(">>> 访问时间: {}, 修改时间: {}, 模式修改时间: {}, 大小: {}".format(stats.st_atime, stats.st_ctime, stats.st_mtime, stats.st_size))
  20.  
  21. import signal
  22.  
  23. def os_func():
  24. '''
  25. 操作系统模块
  26. 该模块下的方法,对各个版本的兼容不明确,须谨慎使用.
  27. 测试版本: Python:3.6.1 Windows:Windows10,64bit
  28. '''
  29.  
  30. # === 系统 ===
  31. strs = os.name # 当前系统: Linux'posix' / Windows'nt' / 'ce' / 'java'
  32. strs = os.sep # 分隔符 \\ (windows:\\ linux:/)
  33. strs = os.pathsep # path变量分隔符 ; (windows:; linux::)
  34. strs = os.linesep # 换行分隔符 \r\n (windows:/r/n linux:\n)
  35. dics = os.environ # 查看系统环境变量(字典)
  36. strs = os.getenv("Path", default=-1) # 读取环境变量, 没有返回None
  37. os.putenv("Path", "C:\\python") # 添加环境变量 (windows无效)
  38. os.unsetenv("Path") # 删除环境变量 (windows不可用)
  39. strs = os.getlogin() # 当前登录的用户名
  40. num = os.getpid() # 当前进程PID
  41. num = os.system("cmd") # 执行操作系统命令, 返回0/1(0执行正确;1执行错误)
  42. strs = os.popen("dir").read() # 执行系统命令,并去读结果
  43. tups = os.times() # 当前进程时间(user用户 / system系统 / children_user子用户(windews=0) / children_system子系统(windews=0) / elapsed过去时间)
  44. bytes = os.urandom(10) # n字节用以加密的随机字符
  45. num = os.cpu_count() # CUP数量
  46.  
  47. # === 进程 ===
  48. os.abort() # 结束进程
  49. # execl(file, *args) / execle / execlp / execlpe / execv / execve / execvp / execvpe // 运行新程序替换当前进程
  50. os.execl(r"C:\python", 'python', 'hello.py', 'i') # (windows执行失败)
  51. os._exit(0) # 退出
  52. os.kill(8480, signal.SIGTERM) # (系统) 终止进程(需要导入:signal) SIGINT (终止进程) / SIGTERM (终止进程) / SIGKILL (终止进程) / SIGALRM (闹钟信号)
  53.  
  54. # === 文件 / 文件夹 ===
  55. strs = os.getcwd() # 当前路径
  56. bytes = os.getcwdb() # 当前路径
  57. os.chdir(r"C:\Windows") # 切换路径
  58. strs = os.curdir # 当前目录 .
  59. strs = os.pardir # 上级目录 ..
  60. strs = os.sep # 路径分隔符 ('/' or '\\')
  61. bytes = os.fsencode(r"C:\c.obj") # (编码) 文件路径字符串转为bytes类型 => b'C:\\c.obj'
  62. strs = os.fsdecode(b"C:\c.obj") # (解码) 文件路径转为strs类型 => 'C:\\c.obj'
  63. # chmod(path, mode, *, dir_fd=None, follow_symlinks=True)
  64. os.chmod(r"C:\python\hello.py", 777) # 修改模式
  65. os.link("file.txt", "file.txt.link") # 创建硬链接
  66. os.symlink("file.txt", "file.txt.link") # 创建软链接 (windows执行失败)
  67. lists = os.listdir() # 所有文件和文件夹(列表) ".""..""D:"
  68. # lstat(path, *, dir_fd=None)
  69. tups = os.lstat(r"C:\c.obj") # 状态信息列表
  70. boolean = os.access(r"C:\c.obj", os.F_OK) # (文件/文件夹) 权限测试 (mode: F_OK存在? / R_OK可读? / W_OK可写? / X_OK可执行?)
  71. # scandir(path='.') // DirEntry迭代器, 文件目录
  72. lists = os.scandir()
  73. # st_atime (访问时间) / st_ctime (修改时间) / st_mtime (模式修改时间) / st_size (大小(字节bytes))
  74. # st_uid (用户ID) / st_gid (用户组ID)
  75. # st_ino (inode) / st_mode (模式) / st_dev (设备) / st_nlink (硬链接)
  76. # count = cpu_count() # (系统) CPU线程数(非核数)
  77. tups = os.stat(".") # 获取状态信息, 返回stat_result对象
  78. # utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) // 更新文件的访问和修改时间
  79. num = os.utime(r"C:\c.obj")
  80. # walk(top, topdown=True, onerror=None, followlinks=False) // 根目录(top)遍历目录树,返回迭代器 (dirpath, dirnames[], filenames[]).
  81. root, dirnames, filenames = os.walk(r"C:\python")
  82.  
  83. os.removedirs(r"c:\python") # 删除多个文件夹 (windews删除多个文件夹失败,单个成功)
  84. # mkdir(path, mode=0o777, *, dir_fd=None) // 创建单个目录, 文件夹已存在,抛 FileExistsError 异常
  85. os.mkdir("test")
  86. # makedirs(name, mode=0o777, exist_ok=False) // 创建(多个)文件夹
  87. os.makedirs(r"./t1/t2/t3")
  88. os.rmdir("test") # 删除单个目录
  89.  
  90. # mknod(path, mode=0o600, device=0, *, dir_fd=None) // 创建空文件 (windows不可用)
  91. os.mknod("test.txt")
  92. # remove(path, *, dir_fd=None)
  93. os.remove("test.txt") # 删除文件
  94. # rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
  95. os.rename("text.txt", "file.txt") # 重命名
  96. os.renames("text.txt", "file.txt")
  97. # replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) // 重命名, 存在则替换
  98. os.replace("text.txt", "file.txt")
  99. tups = os.stat(r"text.txt") # 文件属性
  100.  
  101. # === 文件读写 ===
  102. # open(path, flags, mode=0o777, *, dir_fd=None) // 打开文件 fd:文件描述符
  103. fd = os.open(r"C:\c.obj", os.O_RDWR | os.O_CREAT)
  104. readfd, writefd = os.pipe() # 打开管道,返回读取,写入 (windows失败)
  105. # fdopen(fd, *args, **kwargs) // 打开 (windews写入失败,读取""字符)
  106. f = os.fdopen(readfd)
  107.  
  108. os.read(fd, 150) # 读取
  109. os.write(fd, "String".encode("utf-8")) # 写入
  110. os.fsync(fd) # 强行写入
  111. os.ftruncate(fd, 100) # 裁剪文件
  112. bytes = os.lseek(fd, 10, os.SEEK_SET) # 设置指针 SEEK_SET(0开始) SEEK_CUR(1当前位置) SEEK_END(2末尾)
  113.  
  114. fd_temp = os.dup(fd) # 副本
  115. boolean = os.isatty(fd) # 是否是tty设备
  116.  
  117. stat = os.fstat(fd) # 状态信息
  118. strs = os.device_encoding(fd) # 返回终端字符编码,非终端None
  119.  
  120. os.close(fd) # 关闭
  121. os.closerange(fd, fd) # 关闭并忽略错误
  122.  
  123. # === DirEntry ===
  124. for dir in os.scandir():
  125. strs = dir.name # 文件名
  126. strs = dir.path # 完整路径名
  127. num = dir.inode() # inode编号
  128. boolean = dir.is_dir() # 是否是文件夹
  129. boolean = dir.is_file() # 是否是文件
  130. boolean = dir.is_symlink() # 是否是链接
  131. tups = dir.stat() # 状态信息的stat_result对象
  132.  
  133. # ======================================================================
  134.  
  135. def path_demo():
  136. path = os.getcwd() # 获取当前目录
  137. print("路径: {}".format(path))
  138.  
  139. dirname = os.path.dirname(path) # 获取文件夹名
  140. print("文件夹名为: {}".format(dirname))
  141. drive, path_t = os.path.splitdrive(path) # 获取盘符
  142. print("盘符为: {}".format(drive))
  143.  
  144. def path_func():
  145. '''
  146. 操作路径的函数
  147. '''
  148. paths = [r'file.txt', r"/python/lib/hello.py", r"/python/local/text.txt", "C:/python/local", "C:/python/file.txt"]
  149.  
  150. strs = os.path.abspath(paths[0]) # 绝对路径
  151. strs = os.path.basename(paths[1]) # 文件名
  152. strs = os.path.dirname(paths[1]) # 文件夹名
  153. strs = os.path.join("C:\\", r"a.txt") # 将路径组合返回
  154. dirname, filename = os.path.split(paths[1]) # 分割路径 (目录 文件名)
  155. strs, text = os.path.splitext(paths[1]) # 分离扩展名 (前部分, 扩展名)
  156. drivename, pathname = os.path.splitdrive(paths[3]) # 分离目录 (盘符, 目录)
  157.  
  158. size = os.path.getsize(paths[0]) # 文件大小
  159. strs = os.path.normcase(paths[1]) # 规范大小写 (修改斜杠)
  160. strs = os.path.normpath(paths[1]) # 规范斜杠 (修改斜杠)
  161. strs = os.path.realpath(paths[1]) # 规范名字 (全名)
  162. # relpath(paths[0], start=os.curdir)
  163. strs = os.path.relpath(paths[1]) # 当前路径的文件相对路径 => 'lib\\hello.py'
  164.  
  165. boolean = os.path.exists(paths[1]) # 路径是否存在
  166. boolean = os.path.isabs(paths[1]) # 是否是绝对路径 (不准)
  167. boolean = os.path.isfile(paths[1]) # 是否是文件
  168. boolean = os.path.isdir(paths[1]) # 是否是文件夹
  169. boolean = os.path.islink(paths[1]) # 是否是软链接
  170. boolean = os.path.ismount("C:\\") # 是否是根结点
  171. boolean = os.path.supports_unicode_filenames # Unicode是否可用作文件名
  172. boolean = os.path.samefile(paths[0], paths[0]) # 是否指向同文件或目录
  173. boolean = os.path.sameopenfile(os.open(paths[0], 1), os.open(paths[0], 1)) # fd是否指向同一文件
  174. boolean = os.path.samestat(os.stat(paths[0]), os.stat(paths[0])) # state是否指向同一文件
  175.  
  176. time_s = os.path.getatime(paths[0]) # 获取访问时间
  177. time_s = os.path.getmtime(paths[0]) # 获取修改时间
  178. time_s = os.path.getctime(paths[0]) # 元数据修改时间
  179.  
  180. # ===================================================================================================
  181.  
  182. import pathlib
  183.  
  184. def pathlib_demo():
  185. path = pathlib.Path().home() / "python"
  186.  
  187. path_iter = path.iterdir() # 遍历目录
  188. for path in path_iter:
  189. file_bool = path.is_file
  190.  
  191. if not file_bool:
  192. continue
  193.  
  194. print(">>> {}".format(path))
  195.  
  196. f = path.open() # 是文件就打开读点内容
  197. data = f.readline()
  198. print(data)
  199. f.close()
  200.  
  201. def pathlib_func():
  202. '''
  203. 适合于不同操作系统的类来对文件系统路径进行操作
  204. '''
  205.  
  206. # === PurePath (纯路径) ===
  207. # PurePath(*pathsegments) // 系统地灵分割
  208. path_pure = pathlib.PurePath('hello.py')
  209. path_pure = pathlib.PurePath('python', 'hello.py')
  210. path_pure = pathlib.PurePath(pathlib.Path('python'), pathlib.Path('hello.py'))
  211.  
  212. # PurePosixPath(*pathsegments) // 非windows文件系统路径
  213. # PureWindowsPath(*pathsegments) // windows文件系统路径
  214.  
  215. # 路径是不可变哈希的, 同风格的路径是比较有序的
  216. pathlib.PurePosixPath('hello') == pathlib.PurePosixPath('Hello') # => Flase (PurePosixPath分大小写)
  217. pathlib.PureWindowsPath('hello') == pathlib.PureWindowsPath('hello') # => True (PureWindowsPath不分大小写)
  218. pathlib.PureWindowsPath('hello') in {pathlib.PureWindowsPath('Hello')} # => True
  219. pathlib.PureWindowsPath('C:') < pathlib.PureWindowsPath('d:') # => True
  220.  
  221. # 不同风格的路径不能比较有序
  222. pathlib.PureWindowsPath('hello') == pathlib.PurePosixPath('hello') # => False
  223. # pathlib.PureWindowsPath('hello') < pathlib.PurePosixPath('hello')
  224.  
  225. # 运算符
  226. path_pure = pathlib.PurePath('c:/')
  227. path_pure = path_pure / 'python' / 'hello.py' # 拼接路径
  228.  
  229. tups = path_pure.parts # 返回组件元组 => ('c:\\', 'python', 'hello.py')
  230. drive = path_pure.drive # 盘符 => 'c:'
  231. root = path_pure.root # 根目录 => '\\'
  232. driroot = path_pure.anchor # 盘符 + 根目录 => 'c:\\'
  233. parents = path_pure.parents # 父路径列表 parents[0] => PureWindowsPath('c:/python')
  234. parent = path_pure.parent # 父路径 => PureWindowsPath('c:/python')
  235. name = path_pure.name # 文件(夹)名
  236. suffix = path_pure.suffix # 扩展名
  237. suffixs = path_pure.suffixes # 扩展名列表
  238. name = path_pure.stem # 不带后缀名的文件(夹)名 => 'hello'
  239.  
  240. path = path_pure.as_posix() # 以/返回路径
  241. path = path_pure.as_uri() # 以file URL方式返回路径, 必须是绝对路径 => 'file:///c:/python/hello.py'
  242. path = path_pure.joinpath("a.txt", "b.txt") # 拼接路径 => PureWindowsPath('c:/python/hello.py/a.txt/b.txt')
  243. path = path_pure.with_name("world.py") # 更改路径文件(夹)名 => PureWindowsPath('c:/python/world.py')
  244. path = path_pure.with_suffix(".txt") # 更改扩展名,没有则添加
  245.  
  246. boolean = path_pure.match("*.py") # 匹配通配符 (从右侧进行匹配) (大小写的区分见上方比较代码)
  247. boolean = path_pure.is_absolute() # 是否是绝对路径 (/ // c:/ 开头都被认为是绝对路径)
  248.  
  249. # === Path (具体路径) ===
  250. # Path(*pathsegments)
  251. path = pathlib.Path('hello.py')
  252.  
  253. # PosixPath(*pathsegments)
  254. # WindowsPath(*pathsegments)
  255.  
  256. path_s = path.cwd() # 当前路径
  257. home = path.home() # 用户主目录
  258.  
  259. state = path.stat() # 该路径的状态信息 同os.stat()
  260. state = path.lstat() # 同stat(), 目标是软链接将返回软链接信息
  261. path.chmod(777) # 修改权限模式 同os.chmod()
  262. path.lchmod(777) # 同chmod(), 目标是软链接将更改软链接模式
  263. lists = path.glob(r'*.py') # 迭代器, 所有py文件 (windows失效)
  264. group = path.group() # 文件的组 (windows不可用)
  265. iter = path.iterdir() # 遍历目录 (必须是目录)
  266. # mkdir(mode=0o777, parents=False, exist_ok=False)
  267. path.mkdir() # 创建文件夹
  268. path.rmdir() # 删除文件夹
  269. # open(mode='r', buffering=-1, encoding=None, errors=None, newline=None) // 打开文件
  270. f = path.open()
  271. bytes = path.read_bytes() # 读取文件内容
  272. num = path.write_bytes(b"hello") # (覆盖)写入文件内容
  273. # read_text(encoding=None, errors=None)
  274. strs = path.read_text(encoding='utf-8')
  275. # write_text(data, encoding=None, errors=None)
  276. num = path.write_text("hello")
  277. ow = path.owner() # 该文件拥有者 (windows不可用)
  278. path.rename("new.txt") # 重命名,目标存在则替换
  279. path.replace("new.txt") # 重命名,目标存在则替换
  280. path_s = path.resolve() # 绝对路径
  281. path.symlink_to("hello.py", target_is_directory=False) # 创建软链接, 如果目标是目录, 则(windows下)target_is_directory=True (windows失败)
  282. path.unlink() # 删除文件/文件软链接
  283. # touch(mode=0o666, exist_ok=True)
  284. path.touch() # 创建文件
  285.  
  286. boolean = path.exists() # 文件(夹)是否存在
  287. boolean = path.is_dir() # 是否是文件夹
  288. boolean = path.is_file() # 是否是文件
  289. boolean = path.is_symlink() # 是否是硬链接
  290. boolean = path.is_block_device() # 是否是块设备
  291. boolean = path.is_char_device # 是否是字符设备
  292. boolean = path.samefile(path) # path是否是同一文件
  293.  
  294. if __name__ == "__main__":
  295. os_demo()
  296. path_demo()
  297. pathlib_demo()
  298.  
  299. # os_func()
  300. # path_func()
  301. # pathlib_func()

  转至:https://blog.csdn.net/rozol/article/details/71422712

#!/usr/bin/env python# coding=utf-8 __author__ = 'Luzhuo' __date__ = '2017/5/7'import os def os_demo():# 执行命令 dirs = os.popen("dir").read() print(dirs) # 打印目录树 dirs_info = os.scandir() for info in dirs_info: print("文件名: {}, 路径: {}, inode: {}, 文件夹? {}, 文件? {}, 链接? {}".format(info.name, info.path, info.inode(), info.is_dir(), info.is_file(), info.is_symlink())) stats = info.stat() print(">>> 访问时间: {}, 修改时间: {}, 模式修改时间: {}, 大小: {}".format(stats.st_atime, stats.st_ctime, stats.st_mtime, stats.st_size)) import signal def os_func():''' 操作系统模块 该模块下的方法,对各个版本的兼容不明确,须谨慎使用. 测试版本: Python:3.6.1 Windows:Windows10,64bit '''# === 系统 === strs = os.name # 当前系统: Linux'posix' / Windows'nt' / 'ce' / 'java' strs = os.sep # 分隔符 \\ (windows:\\ linux:/) strs = os.pathsep # path变量分隔符 ; (windows:; linux::) strs = os.linesep # 换行分隔符 \r\n (windows:/r/n linux:\n) dics = os.environ # 查看系统环境变量(字典) strs = os.getenv("Path", default=-1) # 读取环境变量, 没有返回None os.putenv("Path", "C:\\python") # 添加环境变量 (windows无效) os.unsetenv("Path") # 删除环境变量 (windows不可用) strs = os.getlogin() # 当前登录的用户名 num = os.getpid() # 当前进程PID num = os.system("cmd") # 执行操作系统命令, 返回0/1(0执行正确;1执行错误) strs = os.popen("dir").read() # 执行系统命令,并去读结果 tups = os.times() # 当前进程时间(user用户 / system系统 / children_user子用户(windews=0) / children_system子系统(windews=0) / elapsed过去时间) bytes = os.urandom(10) # n字节用以加密的随机字符 num = os.cpu_count() # CUP数量# === 进程 === os.abort() # 结束进程# execl(file, *args) / execle / execlp / execlpe / execv / execve / execvp / execvpe // 运行新程序替换当前进程 os.execl(r"C:\python", 'python', 'hello.py', 'i') # (windows执行失败) os._exit(0) # 退出 os.kill(8480, signal.SIGTERM) # (系统) 终止进程(需要导入:signal) SIGINT (终止进程) / SIGTERM (终止进程) / SIGKILL (终止进程) / SIGALRM (闹钟信号)# === 文件 / 文件夹 === strs = os.getcwd() # 当前路径 bytes = os.getcwdb() # 当前路径 os.chdir(r"C:\Windows") # 切换路径 strs = os.curdir # 当前目录 . strs = os.pardir # 上级目录 .. strs = os.sep # 路径分隔符 ('/' or '\\') bytes = os.fsencode(r"C:\c.obj") # (编码) 文件路径字符串转为bytes类型 => b'C:\\c.obj' strs = os.fsdecode(b"C:\c.obj") # (解码) 文件路径转为strs类型 => 'C:\\c.obj'# chmod(path, mode, *, dir_fd=None, follow_symlinks=True) os.chmod(r"C:\python\hello.py", 777) # 修改模式 os.link("file.txt", "file.txt.link") # 创建硬链接 os.symlink("file.txt", "file.txt.link") # 创建软链接 (windows执行失败) lists = os.listdir() # 所有文件和文件夹(列表) ".""..""D:"# lstat(path, *, dir_fd=None) tups = os.lstat(r"C:\c.obj") # 状态信息列表 boolean = os.access(r"C:\c.obj", os.F_OK) # (文件/文件夹) 权限测试 (mode: F_OK存在? / R_OK可读? / W_OK可写? / X_OK可执行?)# scandir(path='.') // DirEntry迭代器, 文件目录 lists = os.scandir() # st_atime (访问时间) / st_ctime (修改时间) / st_mtime (模式修改时间) / st_size (大小(字节bytes))# st_uid (用户ID) / st_gid (用户组ID)# st_ino (inode) / st_mode (模式) / st_dev (设备) / st_nlink (硬链接)# count = cpu_count() # (系统) CPU线程数(非核数) tups = os.stat(".") # 获取状态信息, 返回stat_result对象# utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) // 更新文件的访问和修改时间 num = os.utime(r"C:\c.obj") # walk(top, topdown=True, onerror=None, followlinks=False) // 根目录(top)遍历目录树,返回迭代器 (dirpath, dirnames[], filenames[]). root, dirnames, filenames = os.walk(r"C:\python") os.removedirs(r"c:\python") # 删除多个文件夹 (windews删除多个文件夹失败,单个成功)# mkdir(path, mode=0o777, *, dir_fd=None) // 创建单个目录, 文件夹已存在,抛 FileExistsError 异常 os.mkdir("test") # makedirs(name, mode=0o777, exist_ok=False) // 创建(多个)文件夹 os.makedirs(r"./t1/t2/t3") os.rmdir("test") # 删除单个目录# mknod(path, mode=0o600, device=0, *, dir_fd=None) // 创建空文件 (windows不可用) os.mknod("test.txt") # remove(path, *, dir_fd=None) os.remove("test.txt") # 删除文件# rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) os.rename("text.txt", "file.txt") # 重命名 os.renames("text.txt", "file.txt") # replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) // 重命名, 存在则替换 os.replace("text.txt", "file.txt") tups = os.stat(r"text.txt") # 文件属性# === 文件读写 ===# open(path, flags, mode=0o777, *, dir_fd=None) // 打开文件 fd:文件描述符 fd = os.open(r"C:\c.obj", os.O_RDWR | os.O_CREAT) readfd, writefd = os.pipe() # 打开管道,返回读取,写入 (windows失败)# fdopen(fd, *args, **kwargs) // 打开 (windews写入失败,读取""字符) f = os.fdopen(readfd) os.read(fd, 150) # 读取 os.write(fd, "String".encode("utf-8")) # 写入 os.fsync(fd) # 强行写入 os.ftruncate(fd, 100) # 裁剪文件 bytes = os.lseek(fd, 10, os.SEEK_SET) # 设置指针 SEEK_SET(0开始) SEEK_CUR(1当前位置) SEEK_END(2末尾) fd_temp = os.dup(fd) # 副本 boolean = os.isatty(fd) # 是否是tty设备 stat = os.fstat(fd) # 状态信息 strs = os.device_encoding(fd) # 返回终端字符编码,非终端None os.close(fd) # 关闭 os.closerange(fd, fd) # 关闭并忽略错误# === DirEntry ===for dir in os.scandir(): strs = dir.name # 文件名 strs = dir.path # 完整路径名 num = dir.inode() # inode编号 boolean = dir.is_dir() # 是否是文件夹 boolean = dir.is_file() # 是否是文件 boolean = dir.is_symlink() # 是否是链接 tups = dir.stat() # 状态信息的stat_result对象# ======================================================================def path_demo(): path = os.getcwd() # 获取当前目录 print("路径: {}".format(path)) dirname = os.path.dirname(path) # 获取文件夹名 print("文件夹名为: {}".format(dirname)) drive, path_t = os.path.splitdrive(path) # 获取盘符 print("盘符为: {}".format(drive)) def path_func():''' 操作路径的函数 ''' paths = [r'file.txt', r"/python/lib/hello.py", r"/python/local/text.txt", "C:/python/local", "C:/python/file.txt"] strs = os.path.abspath(paths[0]) # 绝对路径 strs = os.path.basename(paths[1]) # 文件名 strs = os.path.dirname(paths[1]) # 文件夹名 strs = os.path.join("C:\\", r"a.txt") # 将路径组合返回 dirname, filename = os.path.split(paths[1]) # 分割路径 (目录 文件名) strs, text = os.path.splitext(paths[1]) # 分离扩展名 (前部分, 扩展名) drivename, pathname = os.path.splitdrive(paths[3]) # 分离目录 (盘符, 目录) size = os.path.getsize(paths[0]) # 文件大小 strs = os.path.normcase(paths[1]) # 规范大小写 (修改斜杠) strs = os.path.normpath(paths[1]) # 规范斜杠 (修改斜杠) strs = os.path.realpath(paths[1]) # 规范名字 (全名)# relpath(paths[0], start=os.curdir) strs = os.path.relpath(paths[1]) # 当前路径的文件相对路径 => 'lib\\hello.py' boolean = os.path.exists(paths[1]) # 路径是否存在 boolean = os.path.isabs(paths[1]) # 是否是绝对路径 (不准) boolean = os.path.isfile(paths[1]) # 是否是文件 boolean = os.path.isdir(paths[1]) # 是否是文件夹 boolean = os.path.islink(paths[1]) # 是否是软链接 boolean = os.path.ismount("C:\\") # 是否是根结点 boolean = os.path.supports_unicode_filenames # Unicode是否可用作文件名 boolean = os.path.samefile(paths[0], paths[0]) # 是否指向同文件或目录 boolean = os.path.sameopenfile(os.open(paths[0], 1), os.open(paths[0], 1)) # fd是否指向同一文件 boolean = os.path.samestat(os.stat(paths[0]), os.stat(paths[0])) # state是否指向同一文件 time_s = os.path.getatime(paths[0]) # 获取访问时间 time_s = os.path.getmtime(paths[0]) # 获取修改时间 time_s = os.path.getctime(paths[0]) # 元数据修改时间# ===================================================================================================import pathlib def pathlib_demo(): path = pathlib.Path().home() / "python" path_iter = path.iterdir() # 遍历目录for path in path_iter: file_bool = path.is_file ifnot file_bool: continue print(">>> {}".format(path)) f = path.open() # 是文件就打开读点内容 data = f.readline() print(data) f.close() def pathlib_func():''' 适合于不同操作系统的类来对文件系统路径进行操作 '''# === PurePath (纯路径) ===# PurePath(*pathsegments) // 系统地灵分割 path_pure = pathlib.PurePath('hello.py') path_pure = pathlib.PurePath('python', 'hello.py') path_pure = pathlib.PurePath(pathlib.Path('python'), pathlib.Path('hello.py')) # PurePosixPath(*pathsegments) // 非windows文件系统路径# PureWindowsPath(*pathsegments) // windows文件系统路径# 路径是不可变哈希的, 同风格的路径是比较有序的 pathlib.PurePosixPath('hello') == pathlib.PurePosixPath('Hello') # => Flase (PurePosixPath分大小写) pathlib.PureWindowsPath('hello') == pathlib.PureWindowsPath('hello') # => True (PureWindowsPath不分大小写) pathlib.PureWindowsPath('hello') in {pathlib.PureWindowsPath('Hello')} # => True pathlib.PureWindowsPath('C:') < pathlib.PureWindowsPath('d:') # => True# 不同风格的路径不能比较有序 pathlib.PureWindowsPath('hello') == pathlib.PurePosixPath('hello') # => False# pathlib.PureWindowsPath('hello') < pathlib.PurePosixPath('hello')# 运算符 path_pure = pathlib.PurePath('c:/') path_pure = path_pure / 'python' / 'hello.py'# 拼接路径 tups = path_pure.parts # 返回组件元组 => ('c:\\', 'python', 'hello.py') drive = path_pure.drive # 盘符 => 'c:' root = path_pure.root # 根目录 => '\\' driroot = path_pure.anchor # 盘符 + 根目录 => 'c:\\' parents = path_pure.parents # 父路径列表 parents[0] => PureWindowsPath('c:/python') parent = path_pure.parent # 父路径 => PureWindowsPath('c:/python') name = path_pure.name # 文件(夹)名 suffix = path_pure.suffix # 扩展名 suffixs = path_pure.suffixes # 扩展名列表 name = path_pure.stem # 不带后缀名的文件(夹)名 => 'hello' path = path_pure.as_posix() # 以/返回路径 path = path_pure.as_uri() # 以file URL方式返回路径, 必须是绝对路径 => 'file:///c:/python/hello.py' path = path_pure.joinpath("a.txt", "b.txt") # 拼接路径 => PureWindowsPath('c:/python/hello.py/a.txt/b.txt') path = path_pure.with_name("world.py") # 更改路径文件(夹)名 => PureWindowsPath('c:/python/world.py') path = path_pure.with_suffix(".txt") # 更改扩展名,没有则添加 boolean = path_pure.match("*.py") # 匹配通配符 (从右侧进行匹配) (大小写的区分见上方比较代码) boolean = path_pure.is_absolute() # 是否是绝对路径 (/ // c:/ 开头都被认为是绝对路径)# === Path (具体路径) ===# Path(*pathsegments) path = pathlib.Path('hello.py') # PosixPath(*pathsegments)# WindowsPath(*pathsegments) path_s = path.cwd() # 当前路径 home = path.home() # 用户主目录 state = path.stat() # 该路径的状态信息 同os.stat() state = path.lstat() # 同stat(), 目标是软链接将返回软链接信息 path.chmod(777) # 修改权限模式 同os.chmod() path.lchmod(777) # 同chmod(), 目标是软链接将更改软链接模式 lists = path.glob(r'*.py') # 迭代器, 所有py文件 (windows失效) group = path.group() # 文件的组 (windows不可用) iter = path.iterdir() # 遍历目录 (必须是目录)# mkdir(mode=0o777, parents=False, exist_ok=False) path.mkdir() # 创建文件夹 path.rmdir() # 删除文件夹# open(mode='r', buffering=-1, encoding=None, errors=None, newline=None) // 打开文件 f = path.open() bytes = path.read_bytes() # 读取文件内容 num = path.write_bytes(b"hello") # (覆盖)写入文件内容# read_text(encoding=None, errors=None) strs = path.read_text(encoding='utf-8') # write_text(data, encoding=None, errors=None) num = path.write_text("hello") ow = path.owner() # 该文件拥有者 (windows不可用) path.rename("new.txt") # 重命名,目标存在则替换 path.replace("new.txt") # 重命名,目标存在则替换 path_s = path.resolve() # 绝对路径 path.symlink_to("hello.py", target_is_directory=False) # 创建软链接, 如果目标是目录, 则(windows下)target_is_directory=True (windows失败) path.unlink() # 删除文件/文件软链接# touch(mode=0o666, exist_ok=True) path.touch() # 创建文件 boolean = path.exists() # 文件(夹)是否存在 boolean = path.is_dir() # 是否是文件夹 boolean = path.is_file() # 是否是文件 boolean = path.is_symlink() # 是否是硬链接 boolean = path.is_block_device() # 是否是块设备 boolean = path.is_char_device # 是否是字符设备 boolean = path.samefile(path) # path是否是同一文件if __name__ == "__main__": os_demo() path_demo() pathlib_demo() # os_func()# path_func()# pathlib_func()

Python3 操作系统与路径 模块(os / os.path / pathlib)的更多相关文章

  1. collections模块、时间模块、random模块、os模块、sys模块、序列化模块、subprocess模块

    一.collections模块 1.其他数据类型 在内置数据类型(str.dict.list.tuple.set)的基础上,collections模块还提供了了几个额外的数据类型:Counter.de ...

  2. Python之os.path路径模块中的操作方法总结

    #os.path模块主要集成了针对路径文件夹的操作功能,这里我们就来看一下Python中的os.path路径模块中的操作方法总结,需要的朋友可以参考下 解析路径路径解析依赖与os中定义的一些变量: o ...

  3. Python内置的操作系统模块(os)与解释器交互模块(sys)

    Python内置的操作系统模块(os)与解释器交互模块(sys) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本片博客只介绍Python调用操作系统的模块即os模块,以及Pyth ...

  4. Python的路径操作(os模块与pathlib模块)

    Python的路径操作(os模块与pathlib模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.os.path模块(Python 3.4版本之前推荐使用该模块) #!/u ...

  5. python模块之os和os.path模块

    1.os模块os.listdir(dirname) 列出dirname下的目录和文件os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径.os.getenv()和os.pu ...

  6. Python进阶5---StringIO和BytesIO、路径操作、OS模块、shutil模块

    StringIO StringIO操作 BytesIO BytesIO操作 file-like对象 路径操作 路径操作模块 3.4版本之前:os.path模块 3.4版本开始 建议使用pathlib模 ...

  7. 第二十天 模块 sys os os下path settings random shuit

    一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version 获取Pythonn解释程 ...

  8. os模块、os.path模块、shutil模块、configparser模块、subprocess模块

    一.os模块 os指的是操作系统 该模块主要用于处理与操作系统相关的操作,常用的是文件操作(读.写.删.复制.重命名). os.getcwd()  获取当前文件所在的文件夹路径 os.chdir()  ...

  9. os 模块 和 os模块下的path模块

    import os # os 主要用于与操作系统进行交互 #获取当前的工作目录 print(os.getcwd()) #切换工作目录 os .chdir("D:\上海python全栈4期\d ...

随机推荐

  1. zabbix 2.0 安装

    2.0环境 采用Centos6.3_64位操作系统 Zabbix安装 Zabbix 2.0 for RHEL5: # rpm -ivh http://repo.zabbix.com/zabbix/2. ...

  2. [Training Video - 6] [File Reading] [Groovy] Reading Properties file

    Reading Properties file : Properties prop = new Properties() def path = "D:\\SoapUIStudy\\appli ...

  3. 万网上如何将IP和申请的域名绑定

    万网上如何将IP和申请的域名绑定   在万网上购买了域名后,怎么将它和指定的IP进行绑定呢?下面简单介绍下 工具/原料   中国万网账号 购买的域名 服务器 方法/步骤     百度万网,找到网站后, ...

  4. 微信小程序 tp5上传图片

    test.wxml页面 <view class="title">请选择要反馈的问题</view> <view> <picker bindc ...

  5. 深海划水队项目---七天冲刺day2

    上完选修后的站立式会议: 工作进度 昨天已完成的工作: 这周任务分配,每日任务要求. 今天计划完成的工作: 推进开发进度,进一步理清开发思路. 工作中遇到的困难: 站立式会议好难统一时间啊. 燃尽图 ...

  6. SqlServer 的一个坑

    以前一直以为sqlserver 在做ddl 操作的时候是锁表的,而oracle 是锁行,感觉oracle 要比sqlserver 先进一些,但是这是我的认识错误.其实sqlserver 也是可以锁行的 ...

  7. Android-XML与JSON的理解-JSON的数据格式

    据我了解,在多年以前浏览器客户端和服务器它们的通讯数据交互格式是XML, 使用XML来规定数据格式可读性确实非常强,XML的魅力确实很大,也很成熟,但是也有不足之处,就是在网络传输的时候对流量要求特别 ...

  8. window下使用MyCat实现简单的读写分离

    参考文档 MyCat权威指南 MyCat项目主页 学会数据库读写分离.分表分库--用Mycat,这一篇就够了! MyCat安装 Java SDK下载(必须JDK7或更高版本) MYSQL下载 (MyC ...

  9. WPF相关资料集锦

    微软官方资料 .NET Framework源代码 https://referencesource.microsoft.com/ 微软官方文档 https://docs.microsoft.com/en ...

  10. 1-初步了解C#-语言基础

    本篇博客对应视频讲解 前言 终于开始讲语言了,我选择讲C#.为什么呢?因为C#是很好的入门语言,简洁.全面,面向对象类型安全,开发体验好,上手容易.而其他的语言也已经有人讲了很多了,C#相对来说要少一 ...