首页 > 其他分享 >模块学习之os模块

模块学习之os模块

时间:2024-05-09 15:33:11浏览次数:20  
标签:__ 模块 py 学习 file print path os

【一】导入模块

import os

【二】文件路径相关操作

  • _file__指当前文件

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

import os

file_path = os.path.abspath(__file__)
print(file_path)
# D:\Python\pythonProject\pythonProject1\demo7.py

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

import os

file_path = os.path.dirname(__file__)
print(file_path)
# D:\Python\pythonProject\pythonProject1

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

import os

file_path = os.path.abspath(__file__)
is_path = os.path.exists(file_path)
print(is_path)
# True

#制定一个不存在的路径
is_path = os.path.exists(r'D:\Python\pythonProject\pythonProject2')
print(is_path)
# False

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

import os

file_path = os.path.dirname(__file__)
print(file_path)
# D:\Python\pythonProject\pythonProject1
# join 后面可以跟多个路径
new_file_path = os.path.join(file_path,'img')
print(new_file_path)
# D:\Python\pythonProject\pythonProject1\img

(5)切割路径(split)

import os

file_path = os.path.abspath(__file__)
# 对路径进行切割 --- 切割成元组
path_split = os.path.split(file_path)
print(path_split)
# ('D:\\Python\\pythonProject\\pythonProject1', 'demo7.py')

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

import os

# 获取结尾文件夹名
file_path = os.path.dirname(__file__)
print(os.path.basename(file_path))
# pythonProject1

# 获取结尾文件名
file_path = os.path.abspath(__file__)
print(os.path.basename(file_path))
# demo7.py

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

import os

# 【1】
file_path = os.path.dirname(__file__)
print(os.path.isfile(file_path))
# False

# 【2】
file_path = os.path.abspath(__file__)
print(os.path.isfile(file_path))
# True

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

import os

# 【1】
file_path = 'D:\\Python\\pythonProject\\pythonProject1'
print(os.path.isabs(file_path))
# True

# 【2】
file_path = '../demo7.py'
print(os.path.isabs(file_path))
# False

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

import os

# 【1】
file_path = 'D:\\Python\\pythonProject\\pythonProject1'
print(os.path.isdir(file_path))
# True

# 【2】
file_path = '../demo7.py'
print(os.path.isdir(file_path))
# False

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

import os, time

base_dir = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
dir_time = os.path.getatime(base_dir)
print(time.strftime("%Y-%m-%d %X", time.localtime(dir_time)))
# 2024-04-19 20:26:10

file_time = os.path.getatime(file_path)
print(time.strftime("%Y-%m-%d %X", time.localtime(file_time)))
# 2024-04-19 20:26:10

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

import os, time

base_dir = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
dir_time = os.path.getctime(base_dir)
print(time.strftime("%Y-%m-%d %X", time.localtime(dir_time)))
# 2024-03-28 11:48:15

file_time = os.path.getctime(file_path)
print(time.strftime("%Y-%m-%d %X", time.localtime(file_time)))
# 2024-04-08 12:12:05

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

import os, time

base_dir = os.path.dirname(__file__)
file_path = os.path.abspath(__file__)
dir_time = os.path.getmtime(base_dir)
print(time.strftime("%Y-%m-%d %X", time.localtime(dir_time)))
# 2024-04-19 20:28:29

file_time = os.path.getmtime(file_path)
print(time.strftime("%Y-%m-%d %X", time.localtime(file_time)))
# 2024-04-19 20:28:29

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

import os

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

print(os.path.getsize(base_dir))  # 4096
print(os.path.getsize(file_path))  # 6512

【三】文件和文件夹操作

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

  • 只能创建单级文件目录,多级就会报错
import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join(base_dir, 'file')
print(os.path.exists(file_path)) # False
if not os.path.exists(file_path):
    os.mkdir(file_path)
print(os.path.exists(file_path))  # True
print(file_path)
# D:\Python\pythonProject\pythonProject1\file

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

import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join(base_dir, 'file', 'file_log')
print(os.path.exists(file_path)) # False
if not os.path.exists(file_path):
    os.mkdir(file_path)
print(os.path.exists(file_path))  # True
print(file_path)
# D:\Python\pythonProject\pythonProject1\file\file_log

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

# 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join('file', 'file_log')
true_file_path = os.path.join(base_dir, file_path)
print(os.path.exists(true_file_path))  # True
os.removedirs(file_path)
print(os.path.exists(true_file_path))  # False

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

import os

base_dir = os.path.dirname(__file__)
file_path = os.path.join('file', 'file_log')
true_file_path = os.path.join(base_dir, file_path)
print(os.path.exists(true_file_path))  # True
os.rmdir(file_path)
print(os.path.exists(true_file_path))  # False

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

import os

file_name = os.path.dirname(__file__)
file_list = os.listdir(file_name)
print(file_list)
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

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

import os

base_dir = os.path.dirname(__file__)

print(os.listdir(base_dir))
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'file.py', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

file_path = os.path.join(base_dir,'file.py')
os.remove(file_path)
print(os.listdir(base_dir))
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

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

import os

base_dir = os.path.dirname(__file__)

print(os.listdir(base_dir))
# ['.idea', '.venv', '01.text', '02.text', '1.py', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'File', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

file_path = os.path.join(base_dir, '1.py')
file_file_path = os.path.join(base_dir, 'file')
os.rename(file_path, '01.py')
os.rename(file_file_path, 'file1')
print(os.listdir(base_dir))
# ['.idea', '.venv', '01.py', '01.text', '02.text', 'ATM初级版.py', 'ATM老师版.py', 'bao', 'copy1.txt', 'copy2.txt', 'data.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py', 'demo5.py', 'demo6.py', 'demo7.py', 'file1', 'rs7.jpeg', 'test1.py', 'test3.py', 'user_data.text', '登录注册文件拷贝函数版.py', '购物车.py']

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

import os

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

print(os.stat(base_dir))
# os.stat_result(st_mode=16895, st_ino=1125899906989062, st_dev=1569959328, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1713530941, st_mtime=1713530930, st_ctime=1711597695)
print(os.stat(file_path))  
# os.stat_result(st_mode=33206, st_ino=844424930290280, st_dev=1569959328, st_nlink=1, st_uid=0, st_gid=0, st_size=6871, st_atime=1713530941, st_mtime=1713530930, st_ctime=1712549525)

# 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

# 获取当前工作目录
file_path = os.getcwd()
print(file_path)
# D:\Python\pythonProject\pythonProject1

(10)切换当前工作目录(chdir)

import os

base_dir = os.path.dirname(__file__)
file_path = os.getcwd()
print(file_path)
# D:\Python\pythonProject\pythonProject1

new_file_path = os.path.join(base_dir,'file')
os.chdir(new_file_path)
print(os.getcwd())
# D:\Python\pythonProject\pythonProject1\file

(11)运行shell命令

import os
#【1】直接显示
os.system("ping www.baidu.com")

#【2】获取执行结果
print(os.popen("ping www.baidu.com"))
# <os._wrap_close object at 0x000002276726B0D0>

【四】属性操作

import os
#【1】输出操作系统特定的路径分隔符(sep)
print(os.sep)
# \
# win下为 ""
# Linux下为 "/"

#【2】输出当前平台使用的行终止符(linesep)
print(os.linesep)
# win下为 "\r\n"
# Linux下为 "\n"

#【3】输出用于分割文件路径的字符串(pathsep)
print(os.pathsep)
# ;
# win下为 ";"
# Linux下为 ":"

#【4】输出字符串指示当前使用平台(name)
print(os.name)
# nt
# win下为 'nt'
# Linux下为 'posix'

【五】重点

# os.path.join() 拼接路径
# os.path.dirname(__file__) 获取当前文件所在的文件夹路径
# os.path.abspath(__file__)获取当前文件所在的文件路径
# os.path.exists() 判断路径是否存在
# os.mkdir() 创建单级文件夹
# os.makedirs() 创建多级文件夹
# os.makedirs(path, exist_ok=True) 自动创建不存在的多级文件夹路径

标签:__,模块,py,学习,file,print,path,os
From: https://www.cnblogs.com/ligo6/p/18182394

相关文章

  • Python高级之模块与包
    【一】模块介绍【1】什么是模块在Python中,一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能使用模块既保证了代码的重用性,又增强了程序的结构性和可维护性另外除了自定义模块外,我们还可以导入使用内置或第三方模块提供的现成功能......
  • 学习记录+vcode+GPIO例程+正点原子 DNESP32S3 开发板教程-IDF 版
    第一个程序:UART模式和JTAG模式,配置完成不同。配置主要就是.vscode文件夹中 c_cpp_properties.json,tasks.json,launch.json,settings.json四个文件。一个想法:备份UART模式和JTAG模式的配置文件,用时直接文件替换。简单粗暴方式是.vscode文件夹替换。当然每次要选好串口、设置目标......
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线打开 word 文件
    PageOffice国产版:支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。在OA办公、文档流转等各个Web系统中,实现最简单的打开编辑保存文件功能,调用PageOffice只需要几行代码就可以完成。后端代码在后端编写代码调用webOpen方法......
  • 文件IO学习【一】
    目录计算机的组成部分硬件系统软件系统文件系统Linux系统的目录根文件系统说明目录的结构分析Linux的文件类型计算机的组成部分硬件系统计算机的硬件主要是由五部分组成:控制器、运算器、存储器、输入设备、输出设备。运算器和控制器的总称是中央处理器(CPU),指的是计算机中对......
  • BOSHIDA AC/DC电源模块在通信与网络设备中的应用研究
    BOSHIDAAC/DC电源模块在通信与网络设备中的应用研究随着通信与网络技术的不断发展,通信与网络设备的使用不断增加。电源作为通信与网络设备的重要组成部分之一,在其稳定工作中起到至关重要的作用。AC/DC电源模块作为一种常用的电源转换器,广泛应用于通信与网络设备中。 一,AC/DC......
  • DrissionPage自动化框架学习
    DrissionPage学习官网:http://drissionpage.cn/features/intimate/自动化测试框架:DrissionPage1.DrissionPage事件1.1元素定位查找#根据属性查找,@后面可跟任意属性page.ele('@id:ele_id',timeout=2)#查找id为ele_id的元素,设置等待时间2秒page.eles('@class')#......
  • 吴恩达机器学习-第三课-第三周
    吴恩达机器学习学习视频参考b站:吴恩达机器学习本文是参照视频学习的随手笔记,便于后续回顾。强化学习(reinforcelearning)什么是强化学习示例:如何让遥控飞机学会倒飞?监督学习并不适用,因为很难有好的数据集奖励函数,告诉飞机什么时候是表现好什么时候是表现差强化学习是你需要......
  • centos7.9 python3安装
    centos7.9python3安装在CentOS7.9上安装Python3,你可以使用yum来安装Python3的包。以下是安装Python3.6的步骤:首先,打开终端。安装Python3.6的依赖包:  sudoyuminstall-ygccopenssl-develbzip2-devellibffi-devel下载Python3.6的源......
  • 深度学习tf2.0版本报错——实验24
    深度学习:fromtensorflow.contrib.rnnimportLSTMStateTuple没有contrib模块_indylstm-CSDN博客把原先的tf引用换成蓝色框框,然后把红框的代码改成星星处代码——————针对LSTMCell报错 tf2.0里面缺少crf包是因为把这个contrib包删除了所以要下载一个新的库:安装之后就不会......
  • CompletableFuture学习总结
    CompletableFuture简介在Java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合CompletableFuture的方法。Java中的异步计算异步计算很难推理。通常,我们......