首页 > 其他分享 >【3.0】常用模块之os模块

【3.0】常用模块之os模块

时间:2023-11-25 16:44:20浏览次数:33  
标签:__ 3.0 模块 file print path os DIR

【一】文件操作(os)

  • __file__是指当前文件

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

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

import os

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

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

import os

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

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

import os

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

# 指定一个不存在文件路径
file_path_two = r'E:\PythonProjects\07常用模块学习\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\07常用模块学习

file_name = 'img'
# join 后面可以跟多个路径
file_path = os.path.join(BASE_DIR, file_name)
print(file_path)
# E:\PythonProjects\07常用模块学习\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\\07常用模块学习', '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\07常用模块学习\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\07常用模块学习

file_path = os.path.abspath(__file__)
print(file_path)
# E:\PythonProjects\07常用模块学习\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\07常用模块学习'
file_path_two = r'../07常用模块学习'

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)当前文件目录是否存在

import os

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

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)  # 1700898377.9336035
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_base_time)))
# 2023-11-25  15-46-17

file_time = os.path.getatime(file_path)
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_time)))
# 2023-11-25  15-46-17

(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)  # 1700831862.5625432
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_base_time)))
# 2023-11-24  21-17-42

file_time = os.path.getctime(file_path)
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_time)))
# 2023-11-25  14-41-54

(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)  # 1700831862.5625432
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_base_time)))
# 2023-11-25  15-50-19

file_time = os.path.getmtime(file_path)
print(time.strftime("%Y-%m-%d  %H-%M-%S", time.localtime(file_time)))
# 2023-11-25  15-50-19

(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)

import os

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

file_name = 'img'
file_path = os.path.join(BASE_DIR, file_name)
print(file_path)
# E:\PythonProjects\07常用模块学习\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\07常用模块学习\img :>>> 已创建
# 当前路径 :>>>> True
  • 只能创建单级文件目录,多级就会报错
import os

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

file_name = 'img'
file_name_one = 'Asia'
file_path = os.path.join(BASE_DIR, file_name,file_name_one)
print(file_path)
# E:\PythonProjects\07常用模块学习\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\07常用模块学习\03os模块.py", line 20, in <module>
    os.mkdir(file_path)
FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'E:\\PythonProjects\\07常用模块学习\\img\\Asia'
'''

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

import os

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

file_name = 'img'
file_name_one = 'Asia'
file_path = os.path.join(BASE_DIR, file_name,file_name_one)
print(file_path)
# E:\PythonProjects\07常用模块学习\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\07常用模块学习\img\Asia :>>> 已创建
# 当前路径 :>>>> True

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

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)

  • 删除单级空目录,若目录不为空则无法删除,报错
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)

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)

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)

import os

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

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

import os

BASE_DIR = os.path.dirname(__file__)

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

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\07常用模块学习\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)
# \
  • win下为 ""
  • Linux下为 "/"

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

import os

print(os.linesep)
  • win下为 "\r\n"
  • Linux下为 "\n"

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

import os

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

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

import os

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

标签:__,3.0,模块,file,print,path,os,DIR
From: https://www.cnblogs.com/dream-ze/p/17855688.html

相关文章

  • GitKraken 9.10 (macOS, Windows) - 传奇的 Git 客户端
    GitKraken9.10(macOS,Windows)-传奇的Git客户端请访问原文链接:https://sysin.org/blog/gitkraken-9/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org全球数百万开发者和团队选择GitKraken客户端。它拥有超直观的GUI、强大的终端,并为Windows、Mac和Linux......
  • [CentOS] Samba的安装与配置
    [CentOS]Samba的安装与配置参考链接:CentOS7中Samba文件共享搭建链接中为Win7系统,本文补充了Win10的映射步骤。1.安装Sambayuminstall-ysamba2.关闭selinux和防火墙setenforce0systemctlstopfirewalldsystemctldisablefirewalld3.配置Samba配置文件cp/et......
  • 封装axios
    创建request.jsimportaxiosfrom'axios'import{Message}from'element-ui'importstorefrom'@/store'import{getToken}from'@/utils/auth'//创建axios实例constservice=axios.create({baseURL:process.env.BA......
  • linux Centos 8.2.2004 安装Apache
    Apache服务器安装步骤1.下载安装包至安装目录,wgethttps://mirrors.aliyun.com/apache/httpd/http-2.4.58.tar.bz22.在安装目录下解压文件 tar -xjvf http-2.4.58.tar.bz23.进入解压目录安装文件  3.1进入解压目录cdhttp-2.4.58.tar.bz2  3.2安装文件yuminsta......
  • MauiBlazor iOS端多选照片以及显示本地照片
    安卓端参考之前这篇文章:https://www.cnblogs.com/wecareu/p/17855415.htmliOS端,目前Maui提供的原生接口是MediaPicker应该对应调用的是iOS原生的UIIMagePicker,效果也不错,但是一次只能选择单张照片在ios14以后,苹果推出了新的PHPickerViewController,支持多选照片,UI以弹窗的形式......
  • C++ Boost 异步网络编程基础
    Boost库为C++提供了强大的支持,尤其在多线程和网络编程方面。其中,Boost.Asio库是一个基于前摄器设计模式的库,用于实现高并发和网络相关的开发。Boost.Asio核心类是io_service,它相当于前摄模式下的Proactor角色。所有的IO操作都需要通过io_service来实现。在异步模式下,程序除了发起......
  • 聚合工程的微服务之创建父工程和子模块
    1、创建父工程创建一个普通的Maven项目,File》New》Project》MavenArchetype父级的pom文件只作项目子模块的整合,在maveninstall时不会生成jar/war压缩包。创建好后删除刚创建工程里不需要的文件,只保留:.idea 文件夹、项目 pom 文件,如果没有.gitignore文件,就在根目录下......
  • 『接口测试干货』| Newman+Postman接口自动化测试完整过程
    (『接口测试干货』|Newman+Postman接口自动化测试完整过程)1Newman简介Newman是Postman的一个扩展库(NodeJs库);Newman+Postman可完成接口自动化测试工作;Postman导出的JSON格式文件可通过Newman的命令行执行;因为Postman运行后只有概要结果,没有像其他自动化测试框架那么完美漂......
  • OSPF
    OSPF1.概念OSPF是典型的链路状态路由协议,是业内使用非常广泛的IGP协议之一。有Version2和Version3,2是IPv4用的,3是IPv6的。2.协议相关内容组成2.1Router-ID(路由器标识符)用于在一个OSPF域中唯一的标识一台路由器·,可以手工配置也可以系统自动配置2.2OSPFArea用于标识一个OS......
  • Day02 学习键盘常用快捷键及常用Dos命令学习
    键盘快捷键​ 键盘快捷键:Ctrl篇:Ctrl+A:全部选中Ctrl+C:复制文件或者文档中选中的内容Ctrl+X:剪切文件或者在文档中剪切选中内容Ctrl+P:打印Ctrl+E:打开或关闭"搜索"侧边栏(各种搜索引擎可选)Ctrl+F:打开"查找"面板Ctrl+H:打开“历史”文档中可以执行替换操作Ctrl+R:刷新......