Python os和sys模块

news2025/7/15 0:40:02

一、os模块

os 模块是 Python中的一个内置模块,也是 Python中整理文件和目录最为常用的模块。

该模块提供了非常丰富的方法用来处理文件和目录。比如:显示当前目录下所有文件/删除某个文件/获取文件大小

1、获取当前的工作路径

在 Python 中,利用 os.getcwd() 函数可以取得当前工作路径的字符串,还可以利用 os.chdir() 改变它。

import os

print(os.getcwd())  # D:\JQWS\PythonWS\demo1\dir6

os.chdir(r'D:\JQWS\PythonWS\demo1\dir2')

print(os.getcwd()) # D:\JQWS\PythonWS\demo1\dir2

注意:如果使用 os.chdir() 修改的工作目录不存在,Python 解释器会报错。

2、os.path模块

2.1 获取目录名称和基本名称

获取一个路径的目录名称和基本名称的方法有:

  • os.path.dirname():返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容
  • os.path.basename():返回一个文件名,它包含 path 参数中最后一个斜杠之后的所有内容
  • os.path.split():返回一个元组,里面包含了一个路径的目录名称和基本名称。
  • os.path.join():返回一个文件路径的字符串,包含正确的路径分隔符。

示例代码如下:

import os

path = r'D:\JQWS\PythonWS\demo1\dir6\a.txt'

print(os.path.dirname(path))  # D:\JQWS\PythonWS\demo1\dir6
print(os.path.basename(path))  # a.txt

# 路径切分
splitList = os.path.split(path)
print(splitList)  # ('D:\\JQWS\\PythonWS\\demo1\\dir6', 'a.txt')

# 路径拼接
fPath = os.path.join(splitList[0], splitList[1])
print(fPath)  # D:\JQWS\PythonWS\demo1\dir6\a.txt

2.2 判断是文件or文件夹

os.path 模块提供了以下函数用于检测给定的路径是否存在,以及它是文件还是文件夹:

  • os.path.exists(path) : 判断 path 参数所指的文件或文件夹存在,
  • os.path.isfile(path) :判断 path 参数存在,并且是一个文件,
  • os.path.isdir(path) :判断 path 参数存在,并且是一个文件夹。

示例代码如下:

import os

path = r'D:\JQWS\PythonWS\demo1\dir6\a.txt'

# 判断是文件or文件夹
print(os.path.isfile(path))  # True
print(os.path.isdir(path))  # False

if os.path.exists(path):
    if os.path.isdir(path):
        print("是目录:%s" % path)
    elif os.path.isfile(path):
        print("是文件:%s" % path)
        # 返回该文件的大小
        size = os.path.getsize(path)
        print("文件大小:%s" % size) # 80 字节
else:
    print("啥也不是")

在这里插入图片描述

2.3 目录操作

import os

# 返回指定路径下文件列表(包含文件和目录)
file_dir = r'D:\JQWS\PythonWS\demo1\dir6'
list_dir = os.listdir(file_dir)  # 若不指定路径,则返回当前路径下的文件和文件夹
print(list_dir) # ['a.txt', 'demo1.py', 'demo2.py', 'demo3.py', 'demo4.py']

# 创建文件夹
new_folder = "abc"
if not (os.path.exists(new_folder)):
    os.mkdir(new_folder)  # 创建一个新的文件夹
new_folders = r"D:\JQWS\PythonWS\demo1\dir6\test1\abc1"
if not (os.path.exists(new_folders)):
    os.makedirs(new_folders)  # 创建递归文件夹

# 删除文件夹
if os.path.exists(new_folder):
    os.rmdir(new_folder)
if os.path.exists(new_folders):
    os.rmdir(new_folders)

# 路径替换
print(os.path.relpath('D:\JQWS\PythonWS\demo1\dir6', 'D:\JQWS'))  # PythonWS\demo1\dir6
print(os.path.relpath('D:\JQWS\PythonWS\demo1\dir6', 'D:\JQ'))  # ..\JQWS\PythonWS\demo1\dir6

二、sys模块

sys 模块主要负责与 Python 解释器进行交互,该模块提供了一系列用于控制 Python 运行时环境的不同部分(函数和变量等)。

1、查看 sys模块

查看 sys 模块都包含哪些内容:

import sys

d = dir(sys)
print(d)

结果如下:

['__breakpointhook__', '__displayhook__', '__doc__', '__excepthook__', '__interactivehook__', '__loader__', '__name__', '__package__', '__spec__', '__stderr__', '__stdin__', '__stdout__', '__unraisablehook__', '_base_executable', '_clear_type_cache', '_current_exceptions', '_current_frames', '_debugmallocstats', '_enablelegacywindowsfsencoding', '_framework', '_getframe', '_getquickenedcount', '_git', '_home', '_stdlib_dir', '_vpath', '_xoptions', 'addaudithook', 'api_version', 'argv', 'audit', 'base_exec_prefix', 'base_prefix', 'breakpointhook', 'builtin_module_names', 'byteorder', 'call_tracing', 'copyright', 'displayhook', 'dllhandle', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exception', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'get_asyncgen_hooks', 'get_coroutine_origin_tracking_depth', 'get_int_max_str_digits', 'getallocatedblocks', 'getdefaultencoding', 'getfilesystemencodeerrors', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'getswitchinterval', 'gettrace', 'getwindowsversion', 'hash_info', 'hexversion', 'implementation', 'int_info', 'intern', 'is_finalizing', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'orig_argv', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'platlibdir', 'prefix', 'pycache_prefix', 'set_asyncgen_hooks', 'set_coroutine_origin_tracking_depth', 'set_int_max_str_digits', 'setprofile', 'setrecursionlimit', 'setswitchinterval', 'settrace', 'stderr', 'stdin', 'stdlib_module_names', 'stdout', 'thread_info', 'unraisablehook', 'version', 'version_info', 'warnoptions', 'winver']

2、获取参数列表

argv:返回传递给 Python 脚本的命令行参数列表。

import sys

if __name__ == '__main__':
    args = sys.argv
    print(args)
    
    a = len(sys.argv) - 1  # 参数个数
    print(f'参数个数:{a}')

    # print(sys.argv[0])  # 当前程序名
    # print(sys.argv[1])  # 第一个参数
    # print(sys.argv[2])  # 第二个参数
    # print(sys.argv[3])  # 第三个参数

3、退出当前程序

sys.exit(arg)——程序中间的退出,

  • arg = 0:表示正常退出;
  • arg != 0:表示异常退出,会引发一个SystemExit异常,从而可以在主程序中捕获该异常。
import sys

print('Hello--')
# sys.exit()
try:
    sys.exit(3)
except SystemExit:
    print("SystemExit异常")

print('end---')

4、标准输入输出

import sys

# 1. 标准输出stdout
# 下面两行代码等价
sys.stdout.write('标准输出stdout' + '\n')
print('标准输出print')

# 2. 标准输入stdin
s1 = input(">>")
print(s1)
s2 = sys.stdin.readline()
print(s2)

# 3.错误输出stderr
sys.stderr.write('错误输出stderr')

5、返回 Python 解释器所在路径。

import sys

print(sys.version)
print(sys.winver)
print(sys.platform)
print(sys.path)
print(sys.maxsize)
print(sys.maxunicode)
print(sys.copyright)
print(sys.modules)
print(sys.byteorder)
print(sys.executable)

sys模块其他方法:

  • version:返回 Python 解释器的版本信息。
  • winver:返回 Python 解释器主版号。
  • platform:返回操作系统平台名称。
  • path:返回模块的搜索路径列表。
  • maxsize:返回支持的最大整数值。
  • maxunicode:返回支持的最大 Unicode 值。
  • copyright:返回 Python 版权信息。
  • modules:以字典类型返回系统导入的模块。
  • byteorder:返回本地字节规则的指示器。
  • getdefaultencoding():返回当前默认字符串编码的名称。
  • getrefcount(obj):返回对象的引用计数。
  • getrecursionlimit():返回支持的递归深度。
  • getsizeof(object[, default]):以字节为单位返回对象的大小。
  • setswitchinterval(interval):设置线程切换的时间间隔。
  • getswitchinterval():返回线程切换时间间隔。

os模块的其他方法可查看参考文章。

参考文章:

  • 菜鸟教程-Python3 OS 文件/目录方法:https://www.runoob.com/python3/python3-os-file-methods.html

– 求知若饥,虚心若愚。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/362346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

传统巨头生“变”,中国毫米波雷达市场战火再升级

进入2023年,中国车载毫米波雷达市场战火明显升级。 一方面,愈演愈烈的份额抢夺战不仅仅存在于几大传统巨头之间,也快速转移到与国产供应商之间;随着部分外资巨头的本土化战略深入落地,同时对国产供应商造成了压力。 …

多层感知机的区间随机初始化方法

摘要: 训练是构建神经网络模型的一个关键环节,该过程对网络中的参数不断进行微调,优化模型在训练数据集上的损失函数。参数初始化是训练之前的一个重要步骤,决定了训练过程的起点,对模型训练的收敛速度和收敛结果有重要…

mysql -学习总结

mysql 详解1、mysql特点2、事务2.1 事务的四大特性 – ACID2.2 并发事务问题2.3 事务的四大隔离级别2.4 事务隔离级别操作sql2.5 事务原理 – LBCC MVCC2.4.1 行的隐藏列2.4.2 ReadView2.4.3 MVCC在四种隔离级别下的区别2.5 undo log、binlog、redo log2.5.1 Undo log2.5.2 bin…

【BCT_RFC 3927】IPv4 链路本地地址的动态配置

本文件规定了一个因特网标准跟踪协议互联网社区,并请求讨论和建议改进。请参考当前版本的“互联网标准化国家的官方协议标准”(STD1)和该协议的状态。 抽象的 要参与广域 IP 网络,主机需要为其接口配置 IP 地址,可以通…

10分钟学会使用 Loki 日志聚合系统

Loki 是一个由Grafana Labs 开发的开源日志聚合系统,旨在为云原生架构提供高效的日志处理解决方案。 Loki 通过使用类似 Prometheus 的标签索引机制来存储和查询日志数据,这使得它能够快速地进行分布式查询和聚合,而不需要将所有数据都从存储…

五星好文·射频功率放大器(RF PA)概述

基本概念 射频功率放大器(RF PA)是发射系统中的主要部分,其重要性不言而喻。在发射机的前级电路中,调制振荡电路所产生的射频信号功率很小,需要经过一系列的放大(缓冲级、中间放大级、末级功率放大级)获得足够的射频功…

面试官:说说你对react生命周期的理解

hello,这里是潇晨,今天我们来看下react生命周期在各个阶段是怎样执行的,在面试的过程中有没有遇到这个问题呢,大家也可以学习往期react源码体系文章哦,往期文章目录在文章结尾。 在之前的react源码介绍中,…

小程序(十)签到业务流程分析

文章目录一、如何获取地理信息?二、如何判定某地区新冠疫情的风险等级?系统的人脸签到模块包含的功能非常丰富,不仅仅只有人脸识别的签到功能,而且还可以根据用户签到时候的地理定位,计算出该地区是 新冠疫情 的 高风险…

ChIP-seq 分析:评估片段长度与处理(6)

1. 片段长度评估 片段长度的预测是 ChIPseq 的重要组成部分,它会影响峰识别、峰识别和覆盖概况。 使用互相关或交叉覆盖可以评估按链进行的读取聚类,从而衡量质量。 fragment在 ChIPseq 中,通常是 dsDNA 的短单端读取。片段的 5 将在“”链上…

C语言入门教程||C语言 函数||C语言 数组

C语言 函数 函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。 您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上&#x…

【YOLOv5】 02-标注图片,训练并使用自己的模型

在上一篇文章中,我们完成了YOLOv5的安装和测试。如果想检测自定义目标,就需要用到LabelImg来对图片打标签,本篇文章介绍了LabelImg安装与使用,以及如何训练并使用自己的模型。一、安装LabelImg输入如下命令进行安装:pi…

文献综述怎么写?有哪些准备工作和内容要求

文献综述的撰写是提高研究生论文写作能力的重要途径,是研究生在撰写学术论文和学位论文中必须要涉及的内容,是不可或缺的,写好一篇好的文献综述是存在诸多困难和挑战的,需要掌握一定的技巧和方法。 一、文献综述的写作目的 文献综…

卷起来了,2023金三银四自动化测试面试题精选【字节二面】

面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来…

linux input子系统,gpio-keys,gpio中断使用

GPIO控制 嵌入式linux下应用编程会经常使用到gpio,GPIO 可以通过 sysfs 方式进行操控,进入到/sys/class/gpio 目录下,如下所示: 可以看到该目录下包含两个文件 export、 unexport 以及 5 个 gpiochipX(X 等于 0、 32、…

三种循环结构的使用及区别

循环结构for循环while循环do-while循环三种循环的区别for循环 控制一段代码反复执行很多次 // 输出3次HelloWorldfor (int i 0; i < 3; i) {System.out.println("Hello World"); }while循环 // 输出3次HelloWorldint i 0; while(i < 3){System.out.println(…

图解LeetCode——剑指 Offer 22. 链表中倒数第k个节点

一、题目 输入一个单向链表&#xff0c;输出该链表中倒数第k个节点。为了符合大多数人的习惯&#xff0c;本题从1开始计数&#xff0c;即&#xff1a;链表的尾节点是倒数第1个节点。 例如&#xff0c;一个链表有 6 个节点&#xff0c;从头节点开始&#xff0c;它们的值依次是…

【软件测试】自动化测试该如何做?项目?技术团队?你真的会自动化吗......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 对于自动化测试&…

系统分析师真题2018试卷相关概念二

相联存储的基本特点&#xff1a; 按照内容存取是相联存储的最基本的特点&#xff0c;Cache是一种非常经典的相联存储器。 CISC复杂指令集与RISC指令集的相关概念&#xff1a; CISC复杂指令集&#xff1a; 数量多&#xff0c;使用频率差别大&#xff0c;可变长格式寻址方式&a…

大批量分析下日志处理检索功能

今天我们看一个日志处理分析的问题&#xff08;jvm操作&#xff09; 首先说下需求为什么发生&#xff1a; 需求描述&#xff1a; 在我们进行文件分析的时候&#xff0c;如果文件很多&#xff0c;而这个时候我们的线程在分析的时候产生了大量的报错&#xff0c;由于需要定位问题…

推荐5款免费且无广告的软件,助你提升效率

有时候一些小工具&#xff0c;能给你带来一些意想不到的效果&#xff0c;我们来看看下面这5款工具&#xff0c;你又用过其中几款呢&#xff1f; 1.文件大小查看——Folder Size Folder Size是一个可以查看文件大小的软件&#xff0c;使用它可以一键查看文件夹里的文件大小。你…