首页 > 编程语言 >【python入门之OS模块介绍】---OS模块介绍

【python入门之OS模块介绍】---OS模块介绍

时间:2023-12-17 16:57:26浏览次数:43  
标签:__ 模块 python OS BASE file print path os

title:  【python入门之OS模块介绍】---OS模块介绍
date:  2023-12-16  15:54:06 
updated: 2023-12-16 16:20:00
description: 【python入门之OS模块介绍】---OS模块介绍
cover: 
       https://home.cnblogs.com/u/dream-ze/

【一】OS模块的介绍

os 模块是 Python 编程语言中一个常用的标准模块。
os 是 operation system 的缩写。
operation system 译为操作系统。
	operation [ˌɒpəˈreɪʃn]:操作。
	system [ˈsɪstəm]:系统。
os 模块支持文件和目录操作,进程管理,环境变量管理等功能。

【二】os 模块常用功能

  1. 文件的目录、路径操作
  2. 进程管理
  3. 环境参数的设置

【三】文件操作(os)

  • __file__是指当前文件

【四】文件路径相关(path)

(1)获取当前文件路径(abspath)

import os

# 获取当前文件路径
file_path = os.path.abspath(__file__)
print(file_path)
# E:\PythonProjects\常用模块学习\03os模块.py

(2)获取当前文件所在文件夹路径(dirname)

import os

# 获取当前文件所在文件夹路径
file_path = os.path.dirname(__file__)
print(file_path)
# E:\PythonProjects\常用模块学习

(3)判断当前路径是否存在(exists)

import os

# 指定一个文件路径 (r表示转义符,会将 \ 转换为 \\ )
file_path_one = r'E:\PythonProjects\常用模块学习'
is_true_one = os.path.exists(file_path_one)
print(is_true_one)
# True

# 指定一个不存在文件路径
file_path_two = r'E:\PythonProjects\常用模块学习\img'
is_true_two = os.path.exists(file_path_two)
print(is_true_two)
# False

(4)拼接文件路径(join)

import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)
# E:\PythonProjects\常用模块学习

file_name = 'img'
# join 后面可以跟多个路径
file_path = os.path.join(BASE_DIR, file_name)
print(file_path)
# E:\PythonProjects\常用模块学习\img

(5)切割路径(split)

import os

# 获取当前文件所在路径
BASE_DIR = os.path.abspath(__file__)
# 对路径进行切割 --- 切割成元组
file_path_list = os.path.split(BASE_DIR)
print(file_path_list)
# ('E:\\PythonProjects\\常用模块学习', '03os模块.py')

(6)获取结尾文件/文件夹名(basename)

import os

BASE_DIR = os.path.dirname(__file__)

file_path = os.path.join(BASE_DIR, 'img')
print(file_path)

# 返回path最后的文件名
# 如果 path以/或\结尾,那么就会返回空值。
# 即 os.path.split(path) 的第二个元素
is_true = os.path.basename(file_path)
print(is_true)
# img

file_path_one = os.path.abspath(__file__)
print(file_path_one)
# E:\PythonProjects\常用模块学习\03os模块.py

print(os.path.basename(file_path_one))
# 03os模块.py

(7)当前路径是否是文件(isfile)

import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)
# E:\PythonProjects\常用模块学习

file_path = os.path.abspath(__file__)
print(file_path)
# E:\PythonProjects\常用模块学习\03os模块.py

is_true_one = os.path.isfile(BASE_DIR)
print(is_true_one)
# False

is_true_two = os.path.isfile(file_path)
print(is_true_two)
# True

(8)当前路径是否为绝对路径(isabs)

import os

file_path_one = r'E:\PythonProjects\常用模块学习'
file_path_two = r'../常用模块学习'

is_true_one = os.path.isabs(file_path_one)
print(is_true_one)
# True

is_true_two = os.path.isabs(file_path_two)
print(is_true_two)
# False

(9)当前文件目录是否存在(isdir)

import os

file_path_one = r'E:\PythonProjects\常用模块学习'
file_path_two = r'../常用模块学习'

is_true_one = os.path.isdir(file_path_one)
print(is_true_one)
# True

is_true_two = os.path.isdir(file_path_two)
print(is_true_two)
# True

(10)获取当前文件或目录的最后访问时间(getatime)

import os, time

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getatime(BASE_DIR)
print(file_base_time)  # 1702799173.956714
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(file_base_time)))
# 2023-12-17 15:47:19

file_time = os.path.getatime(file_path)
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(file_time)))
# 2023-12-17 15:49:31

(11)获取当前文件或者目录的创建时间(getctime)

import os, time

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getctime(BASE_DIR)
print(file_base_time)  # 1702799486.1640408
print(time.strftime("%Y-%m-%d  %H:%M:%S", time.localtime(file_base_time)))
# 2023-12-17  15:51:53

file_time = os.path.getctime(file_path)
print(time.strftime("%Y-%m-%d  %H:%M:%S", time.localtime(file_time)))
# 2023-12-17  15:52:35

(12)返回当前文件或路径的最后修改时间(getmtime)

import os, time

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getmtime(BASE_DIR)
print(file_base_time)  # 1702799630.6311653
print(time.strftime("%Y-%m-%d  %H:%M:%S", time.localtime(file_base_time)))
# 2023-12-17  15:53:17

file_time = os.path.getmtime(file_path)
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_time)))
# 2023-12-17  15:53:17

(13)返回当前文件的大小(getsize)

import os

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_time = os.path.getsize(BASE_DIR)
print(file_base_time)  # 0

file_time = os.path.getsize(file_path)
print(file_time)  # 4969

【五】路径操作(os)

(1)创建单级文件夹(mkdir)

mkdir是 make directory 的缩写,译为创建目录。

make [meɪk]:创建。

directory [dəˈrektəri]:目录。

mkdir 的作用就相当于新建文件夹。

示例:

import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)
# E:\PythonProjects\常用模块学习

file_name = 'img'
file_path = os.path.join(BASE_DIR, file_name)
print(file_path)
# E:\PythonProjects\常用模块学习\img

# 判断当前是否存在 file_path 指定路径
if not os.path.exists(file_path):
    # 不存在则新建 路径 (只能创建文件夹)
    os.mkdir(file_path)
    print(f"{file_path} :>>> 已创建")

print(f"当前路径 :>>>> {os.path.exists(file_path)}")
# E:\PythonProjects\常用模块学习\img :>>> 已创建
# 当前路径 :>>>> True
  • 只能创建单级文件目录,多级就会报错
import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)
# E:\PythonProjects\常用模块学习

file_name = 'img'
file_name_one = 'Asia'
file_path = os.path.join(BASE_DIR, file_name,file_name_one)
print(file_path)
# E:\PythonProjects\常用模块学习\img\Asia

if not os.path.exists(file_path):
    os.mkdir(file_path)
    print(f"{file_path} :>>> 已创建")

print(f"当前路径 :>>>> {os.path.exists(file_path)}")

'''
Traceback (most recent call last):
  File "E:\PythonProjects\常用模块学习\03os模块.py", line 20, in <module>
    os.mkdir(file_path)
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'E:\\PythonProjects\\常用模块学习\\img\\Asia'
'''

(2)创建多级文件夹(makedirs)

makedirs 就是 make directories 的缩写。
directory [dəˈrektəri]:目录。
directory 的复数形式为 directories

makedirs 的作用可以理解为依次创建文件夹。

示例:

import os

BASE_DIR = os.path.dirname(__file__)
print(BASE_DIR)
# E:\PythonProjects\常用模块学习

file_name = 'img'
file_name_one = 'Asia'
file_path = os.path.join(BASE_DIR, file_name,file_name_one)
print(file_path)
# E:\PythonProjects\常用模块学习\img\Asia

if not os.path.exists(file_path):
    # 多级文件夹创建使用 makedirs
    os.makedirs(file_path)
    print(f"{file_path} :>>> 已创建")

print(f"当前路径 :>>>> {os.path.exists(file_path)}")
# E:\PythonProjects\常用模块学习\img\Asia :>>> 已创建
# 当前路径 :>>>> True

(3)删除多级文件夹(removedirs)

import os

BASE_DIR = os.path.dirname(__file__)

file_name = 'img'
file_path = os.path.join(file_name, 'Asia')
print(file_path)
# img\Asia

file_true_path = os.path.join(BASE_DIR, file_path)
print(os.path.exists(file_true_path))
# True

os.removedirs(file_path)

print(os.path.exists(file_true_path))
# False
  • 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

(4)删除单级文件夹(rmdir)

rmdir 是 remove directory的缩写,译为删除目录。
directory [dəˈrektəri]:目录。

示例:

  • 删除单级空目录,若目录不为空则无法删除,报错
import os

BASE_DIR = os.path.dirname(__file__)

file_name = 'img'
file_path = os.path.join(file_name, 'Asia')
print(file_path)
# img\Asia

file_true_path = os.path.join(BASE_DIR, file_path)
print(os.path.exists(file_true_path))
# True

# 如果文件路径存在会从最后开始删,只删一级
os.rmdir(file_path)

print(os.path.exists(file_true_path))
# False

(5)列出当前文件夹下的所有文件及文件夹(listdir)

listdir 是 list directory 的缩写,译为目录的列表。

list [lɪst]:列表。

directory [dəˈrektəri]:目录。

示例:

import os

BASE_DIR = os.path.dirname(__file__)
file_list = os.listdir(BASE_DIR)
print(file_list)
# ['01正则模块.py', '02时间模块.py', '03os模块.py', 'img']

(6)删除指定文件(remove)

remove[rɪˈmuːv]:去掉、废除。

remove 的作用是删除指定文件。

示例:

import os

BASE_DIR = os.path.dirname(__file__)

file_list_one = os.listdir(BASE_DIR)
print(file_list_one)
# ['01正则模块.py', '02时间模块.py', '03os模块.py', 'img', 'test.py']

file_path = os.path.join(BASE_DIR, 'test.py')
os.remove(file_path)

file_list_two = os.listdir(BASE_DIR)
print(file_list_two)
# ['01正则模块.py', '02时间模块.py', '03os模块.py', 'img']

(7)重命名文件夹/文件(rename)

import os

BASE_DIR = os.path.dirname(__file__)

file_list_one = os.listdir(BASE_DIR)
print(file_list_one)
# ['01正则模块.py', '02时间模块.py', '03os模块.py', 'img', 'test.py']

file_path = os.path.join(BASE_DIR, 'test.py')
img_file_path = os.path.join(BASE_DIR, 'img')
os.rename(file_path, 'my_test.py')
os.rename(img_file_path, 'my_img')

file_list_two = os.listdir(BASE_DIR)
print(file_list_two)
# ['01正则模块.py', '02时间模块.py', '03os模块.py', 'my_img', 'my_test.py']

(8)获取文件夹/文件详细信息(stat)

import os

BASE_DIR = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)

file_base_stat = os.stat(BASE_DIR)
print(file_base_stat)
# os.stat_result(st_mode=16895, st_ino=16044073674306378, st_dev=2321476820, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1700900090, st_mtime=1700900090, st_ctime=1700831862)

file_stat = os.stat(file_path)
print(file_stat)
# os.stat_result(st_mode=33206, st_ino=531143281053175299, st_dev=2321476820, st_nlink=1, st_uid=0, st_gid=0, st_size=7580, st_atime=1700900090, st_mtime=1700900090, st_ctime=1700894514)

stat 结构:

st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。

(9)获取当前工作目录(getcwd)

cwd 是 current working Directory 的缩写,译为当前工作目录。

当前工作目录就是我们现在编写代码的文件所在的文件夹。

get [ɡet]:得到。

current [ˈkʌrənt]:当前的。

working [ˈwɜːkɪŋ]:工作。

directory [dəˈrektəri]:目录。

使用示例:

import os

# 获取当前工作目录,即当前python脚本工作的目录路径    
# 我记为当前函数属于获取项目目录(即当前情况下的工作目录就是项目根目录)
file_path = os.getcwd()
print(file_path)
# E:\PythonProjects\常用模块学习

(10)改变当前工作目录(chdir)

import os

BASE_DIR = os.path.dirname(__file__)

# 获取当前工作目录,即当前python脚本工作的目录路径
file_path = os.getcwd()
print(file_path)
# E:\PythonProjects\常用模块学习

img_file_path = os.path.join(BASE_DIR, 'img')
os.chdir(img_file_path)

file_path_new = os.getcwd()
print(file_path_new)
# E:\PythonProjects\常用模块学习\img

(11)运行shell命令

[1]直接显示

import os

os.system("ping www.baidu.com")

[2]获取执行结果

import os

res = os.popen("ping www.baidu.com")
print(res)

【六】属性操作(os)

(1)输出操作系统特定的路径分隔符(sep)

import os

print(os.sep)
#output: \
  • win下为 ""
  • Linux下为 "/"

(2)输出当前平台使用的行终止符(linesep)

import os

print(os.linesep)

#输出为空?   -----应该是 \n
  • win下为 "\r\n"
  • Linux下为 "\n"

(3)输出用于分割文件路径的字符串(pathsep)

import os

print(os.pathsep)
# ;
  • win下为 ";"
  • Linux/Mac下为 ":"

(4)输出字符串指示当前使用平台(name)

import os

print(os.name)
# nt
  • win下为 'nt'
  • Linux下为 'posix'

标签:__,模块,python,OS,BASE,file,print,path,os
From: https://www.cnblogs.com/queryH/p/17909303.html

相关文章

  • FreeRTOS--递归锁
    示例源码基于FreeRTOSV9.0.0递归锁1.概述递归锁是特殊的互斥量,允许同一任务多次获取和释放锁,而不会造成死锁;获取和释放的次数必须相同;递归锁的实现依赖于内部的uxRecursiveCallCount变量,它标记递归的次数,每次上锁加1,每次解锁减1,减为0才真正释放锁;递归锁也不能在中断内使用......
  • FreeRTOS--互斥量
    示例源码基于FreeRTOSV9.0.0互斥量1.概述互斥量用于临界资源的保护,通过互斥量,多个任务对相同资源进行的访问操作是互斥的;互斥量的核心在于谁上锁,就由谁解锁,这只是约定,FreeRTOS并没有在代码上实现这一点;互斥量是一种特殊的信号量,也是一种特殊的队列;使用互斥量,需要开启宏con......
  • python之tkinter的鼠标样式
    tkinter的Label、Button、Enter等等cursor都可以使用表中特性改变鼠标样式。取值样式备注arrow based_arrow_down based_arrow_up boat bogosity bottom_left_corner bottom_right_corner bottom_side bottom_tee box_spiral center_ptr circle clock coffee_mug cro......
  • 【python扩展之软件开发目录规范】---软件开发目录规范
    title:【python扩展之软件开发目录规范】---软件开发目录规范date:2023-12-1618:54:06updated:2023-12-1619:20:00description:【python扩展之软件开发目录规范】---软件开发目录规范cover: https://blog.csdn.net/DiligentGG/article/details/125784751......
  • hashlib+time模块
    hashlib模块【一】什么是摘要算法Python的hashlib提供了常见的摘要算法如MD5SHA1等等。摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。摘要算法就是通过摘要函数f()对任意长度的数据data计算出......
  • 深度解析Python上下文管理器:优雅资源管理与异常处理
    Python是一种功能强大且灵活的编程语言,它提供了许多高级工具和特性来简化开发过程。其中之一就是上下文管理器,它允许开发者更优雅地处理资源管理和异常处理。本文将深入探讨Python中上下文管理器的工作原理、使用方法以及实际应用。1. 什么是上下文管理器?上下文管理器是一种Python......
  • 【python基础之包介绍】---包
    title:【python基础之包介绍】---包date:2023-12-0618:54:06updated:2023-12-0619:20:00description:【python基础之包】---包cover:https://home.cnblogs.com/u/dream-ze/包【1】什么是包简介包是一个模块的集合,它可以将多个模块的功能组合到一起......
  • K-means聚类思想及其Python实现
    聚类就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。“相似”这一概念,是利用距离标准来衡量的,我们通过计算对象与对象之间的距离远近来判断它们是否属于同一类别,即是否是同一个簇。聚类是一种无监督的学习(UnsupervisedLearn......
  • 开启摄像头(python)
    importcv2vc=cv2.VideoCapture(0)fps=20000size=(int(vc.get(cv2.CAP_PROP_FRAME_WIDTH)),int(vc.get(cv2.CAP_PROP_FRAME_HEIGHT)))vw=cv2.VideoWriter('test2-7out.avi',cv2.VideoWriter_fourcc('X',�......
  • VMware workstation中安装的centos虚拟机ip自动获取可以上网,设置静态ip不能上网问题解
    一、需求   linux中我们会设置hosts文件,这会涉及ip和域名的设置,但是如果虚拟机自动获取ip地址的话,这就意味着之前设置的hosts文件需要重新修改,所以我们需要设置虚拟机为静态ip地址。二、故障现象   我linux虚拟机最开始是自动获取的ip地址,用的nat模式,是可以上网的,......