Python 深入理解 os 和 sys 模块

Python 深入理解 os 和 sys 模块

  • OS 介绍
    • 代码
      • 智能连接(拼接)路径
      • 创建目录
      • 展示(列出目录)
      • 删除文件
      • 重命名文件或目录
  • sys 介绍
    • 代码
      • 命令行参数处理 (`sys.argv`)
      • 标准输入输出重定向 (`sys.stdin`, `sys.stdout`, `sys.stderr`):
      • 解释器相关 (`sys.version`, `sys.exit(code)`):
  • 综合
    • 代码


OS 介绍

os 模块为 Python 提供了与操作系统交互的接口。这个模块可以用来执行各种与操作系统有关的操作,比如文件和目录的操作、进程管理以及环境变量管理等。

方法描述
os.path.join(path1, path2, …)用于智能地连接一个或多个路径部分,类似于 path.join()
os.makedirs(name, mode=0o777, exist_ok=False)创建目录,如果目录已存在则抛出异常(如果设置 exist_ok=True 则不抛出异常)。
os.listdir(path)列出指定路径下的所有文件和目录。
os.remove(name)删除文件。
os.rename(old, new)重命名文件或目录。

代码

智能连接(拼接)路径

os.path.join(path1, path2, ...): 用于智能地连接一个或多个路径部分,类似于 path.join()

import ospath1 = '/path/to/dir'
path2 = 'file.txt'full_path = os.path.join(path1, path2)
print(full_path)

在这里插入图片描述

创建目录

os.makedirs(name, mode=0o777, exist_ok=False): 创建目录,如果目录已存在则抛出异常(如果设置 exist_ok=True 则不抛出异常)。

import osdirectory = '/path/to/new/directory'try:os.makedirs(directory)print(f"Directory '{directory}' created successfully.")
except FileExistsError:print(f"Directory '{directory}' already exists.")

展示(列出目录)

os.listdir(path): 列出指定路径下的所有文件和目录。

import ospath = '/path/to/directory'files_and_directories = os.listdir(path)
print("Files and directories in", path, "are:", files_and_directories)

删除文件

os.remove(name): 删除文件。

import osfile_to_delete = '/path/to/file.txt'if os.path.exists(file_to_delete):os.remove(file_to_delete)print("File", file_to_delete, "deleted successfully.")
else:print("File", file_to_delete, "does not exist.")

重命名文件或目录

os.rename(old, new): 重命名文件或目录。

import osold_name = '/path/to/old_name.txt'
new_name = '/path/to/new_name.txt'if os.path.exists(old_name):os.rename(old_name, new_name)print("File", old_name, "renamed to", new_name)
else:print("File", old_name, "does not exist.")

sys 介绍

sys 模块提供了许多与 Python 解释器和系统相关的变量和函数。

功能描述
命令行参数处理
sys.argv包含从命令行传递给 Python 脚本的参数列表。
标准输入输出重定向
sys.stdin代表标准输入。
sys.stdout代表标准输出。
sys.stderr代表标准错误。
解释器相关
sys.version返回 Python 解释器版本字符串。
sys.exit(code)退出程序,并可选地返回一个退出代码。

代码

命令行参数处理 (sys.argv)

import sys# 打印命令行参数列表
print("命令行参数:", sys.argv)# 打印每个命令行参数
for i, arg in enumerate(sys.argv):print(f"参数 {i}: {arg}")

标准输入输出重定向 (sys.stdin, sys.stdout, sys.stderr):

import sys# 从标准输入读取用户输入
user_input = input("请输入一些内容: ")
print("你输入的内容是:", user_input)# 将输出重定向到文件
with open('output.txt', 'w') as f:sys.stdout = fprint("这条消息会写入到文件 output.txt 中")

解释器相关 (sys.version, sys.exit(code)):

import sys# 打印 Python 解释器版本字符串
print("Python 解释器版本:", sys.version)# 退出程序,并返回退出代码
sys.exit(0)  # 退出代码为 0 表示正常退出

综合

Python中使用ossys模块实现一个跨平台的文件复制功能,并能够接收命令行参数

代码

import os
import sys
def copy_file(src, dst):try:with open(src, 'rb') as f:content = f.read()with open(dst, 'wb') as f:f.write(content)print(f"文件 {src} 复制到 {dst} 成功。")except IOError as e:print(f"无法复制文件 {src}{dst}{e}")
def main(args):if len(args) != 3:print("使用说明:python copy_file.py <源文件> <目标文件>")sys.exit(1)source = args[1]destination = args[2]copy_file(source, destination)
if __name__ == "__main__":main(sys.argv)

在命令中运行

python copy_file.py 源文件.txt 目标文件.txt

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ShardingSphere 5.x 系列【5】Spring Boot 3 集成并实现读写分离

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 使用限制3. 案例演示3.1 一主双从3.2 项目搭建3.3 配置3.4 测试4.…

查看NodeJs版本和查看NPM版本

Windows10 Dos命令下 查看NodeJs版本和查看NPM版本 NodeJs的命令是&#xff1a;node -v Npm的命令是&#xff1a;npm -v 下图&#xff1a; 记录下&#xff01;~

JavaScript基础(28)_获取元素的其他样式

其他样式操作的属性 clientWidth(只读)&#xff1a;获取元素的"可见宽度"&#xff0c;包括内容区和内边距(返回的是一个数字&#xff0c;不带px&#xff0c;可直接进行计算)。 clientHeight(只读)&#xff1a;获取元素的"可见高度"&#xff0c;包括内容区…

推荐收藏!数据分析岗最走心的面经!

年底了&#xff0c;技术群组织了一场机器学习算法岗技术&面试讨论会&#xff0c;邀请了一些同学分享他们的面试经历&#xff0c;讨论会会定期召开&#xff0c;如果你想加入我们的讨论群或者希望要更详细的资料&#xff0c;文末加入。 喜欢本文记得收藏、关注、点赞 &#…

Redis篇之分布式锁

一、为什么要使用分布式锁 1.抢劵场景 &#xff08;1&#xff09;代码及流程图 &#xff08;2&#xff09;抢劵执行的正常流程 就是正好线程1执行完整个操作&#xff0c;线程2再执行。 &#xff08;3&#xff09;抢劵执行的非正常流程 因为线程是交替进行的&#xff0c;所以有…

BUUCTF-Real-[Tomcat]CVE-2017-12615

目录 漏洞描述 一、漏洞编号&#xff1a;CVE-2017-12615 二、漏洞复现 get flag 漏洞描述 CVE-2017-12615&#xff1a;远程代码执行漏洞 影响范围&#xff1a;Apache Tomcat 7.0.0 - 7.0.79 (windows环境) 当 Tomcat 运行在 Windows 操作系统时&#xff0c;且启用了 HTTP P…

【python绘图】爱心、樱花树、饼图、折线图、雷达图

一、爱心 import turtledef curvemove():for i in range(200):turtle.speed(0)turtle.right(1) # 光标向右偏1度turtle.forward(1)# 前进1pxturtle.penup() turtle.goto(0, -70) turtle.pendown()turtle.color(red) turtle.begin_fill() turtle.left(140) turtle.forward(111…

【C++】中的 inline 用法

1、引入 inline 关键字的原因 在 c/c 中&#xff0c;为了解决一些频繁调用的小函数大量消耗栈空间&#xff08;栈内存&#xff09;的问题&#xff0c;特别的引入了 inline 修饰符&#xff0c;表示为内联函数。 栈空间就是指放置程序的局部数据&#xff08;也就是函数内数据&a…

Maven之安装自定义jar到本地Maven仓库中

Maven之安装自定义jar到本地Maven仓库中 文章目录 Maven之安装自定义jar到本地Maven仓库中1. 命令行窗口安装方式1. 常用参数说明2. 安装实例 2. IDEA中安装方式3. 使用 1. 命令行窗口安装方式 安装指定文件到本地仓库命令&#xff1a;mvn install:install-file; 在windows的cm…

【复现】万户 ezOFFICE SQL注入漏洞_42

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 万户ezOFFICE协同管理平台分为企业版和政务版。 解决方案由五大应用、两个支撑平台组成&#xff0c;分别为知识管理、工作流程、沟…

成员对象与封闭类

1. 成员对象与封闭类 类里有其他对象则该对象叫成员对象&#xff1b;有成员对象的类叫 封闭类&#xff1b;上例中&#xff0c;如果CCar类不定义构造函数&#xff0c;则会使用默认的无参构造函数&#xff0c;那么下面的语句会编译出错: 因为编译器不明白CCar类中的tyre成员对象…

c++多态(2)-- 虚函数

我们在多态(1)中说到&#xff0c;多态就是使用父类指针访问子类函数&#xff0c;可以使得代码更加的简便。并且举了一个喂食动物的例子加以说明&#xff0c;我们使用代码进行展示。 enum class _ANIMALS_TYPE {CAT,DOG,ANIMAL_COUNT };class Animal { public:Animal(_ANIMALS_…