Python 深入理解 os 和 sys 模块

news2024/9/24 7:20:52

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 os

path1 = '/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 os

directory = '/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 os

path = '/path/to/directory'

files_and_directories = os.listdir(path)
print("Files and directories in", path, "are:", files_and_directories)

删除文件

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

import os

file_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 os

old_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 = f
    print("这条消息会写入到文件 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.coloradmin.cn/o/1439480.html

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

相关文章

备战蓝桥杯---搜索(进阶3)

看一道比较难又有趣的题&#xff1a; 下面是分析&#xff1a; 我们不妨把属性值看成点&#xff0c;一个装备可以看成一条边&#xff08;只能选一个端点&#xff09;不存在有装备属性值的当成一个点&#xff0c;于是我们便形成了树或图&#xff0c;如果是树的话&#xff0c;有一…

请立即收藏!春节必备AI工具盘点:一键拜年短信、海报!AI全家福!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

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

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

iOS 需求 多语言(国际化)App开发 源码

一直觉得自己写的不是技术&#xff0c;而是情怀&#xff0c;一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的&#xff0c;希望我的这条路能让你们少走弯路&#xff0c;希望我能帮你们抹去知识的蒙尘&#xff0c;希望我能帮你们理清知识的脉络&#xff0…

正点原子--STM32基本定时器学习笔记(2)

目录 1. 相关寄存器介绍 1.1 控制寄存器 1(TIMx_CR1)​编辑 1.2 DMA/中断使能寄存器(TIMx_DIER) 1.3 状态寄存器(TIMx_SR) 1.4 计数器(TIMx_CNT) 1.5 预分频器(TIMx_PSC) 1.6 自动重装载寄存器(TIMx_ARR) 2. 工程建立 3. 导入tim.c文件 4. 相关HAL库函数介绍 4.1 H…

购物车商品数量为0判断是否删除

当编辑商品的数量为1&#xff0c;再减的话&#xff0c;我们搞个模态提示&#xff0c;让用户决定是否要删除这个商品&#xff1f; //商品数量的编辑功能handleItemNumEdit(e){const {operation,id}e.currentTarget.dataset;console.log(operation,id);let {cart}this.data;let …

13. UE5 RPG限制Attribute的值的范围以及生成结构体

前面几章&#xff0c;我们实现了通过GameplayEffect对Attribute值的修改&#xff0c;比如血量和蓝量&#xff0c;我们都是有一个最大血量和最大蓝量去限制它的最大值&#xff0c;而且血量和蓝量最小值不会小于零。之前我们是没有实现相关限制的&#xff0c;接下来&#xff0c;我…

3.1-媒资管理之需求分析+搭建Nacos

文章目录 媒资管理模块1 模块需求分析1.1 模块介绍1.2 业务流程1.2.1 上传图片1.2.2 上传视频1.2.3 处理视频1.2.4 审核媒资 2.2 搭建Nacos2.2.1 服务发现中心2.2.2 配置中心2.2.2.1 配置三要素2.2.2.3配置content-api 2.2.3 公用配置2.2.4 配置优先级2.2.5 导入配置文件2.2.6 …

三、设计模式相关理论总结

一、面向对象编程 1.1 概述 简称Object Oriented Program(OOP)&#xff0c;指以类或对象作为基础组织单元&#xff0c;遵循封装、继承、多态以及抽象等特性&#xff0c;进行编程。其中面向对象不一定遵循封装、继承、封装和多态等特性&#xff0c;只是前人总结的套路规范&…

前端JavaScript篇之对闭包的理解

目录 对闭包的理解用途循环中使用闭包解决 var 定义函数的问题 对闭包的理解 闭包是指一个函数能够访问并操作其词法作用域&#xff08;定义时所在的作用域&#xff09;之外的变量的能力。它可以通过在一个函数内部创建另一个函数来实现。内部函数可以访问外部函数的局部变量、…

Python算法题集_两数相加

Python算法题集_两数相加 题2&#xff1a;两数相加1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【直接相加】2) 改进版一【对齐链表】3) 改进版二【数组求和】 4. 最优算法 本文为Python算法题集之一的代码示例 题2&#xff1a;两数相加 1.…

相机图像质量研究(10)常见问题总结:光学结构对成像的影响--光圈

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

Quicker读取浏览器的书签(包括firefox火狐)

从edge换了火狐&#xff0c;但是quicker不能读取本地的bookmarks文件了&#xff0c;就研究了一下。 方法1&#xff1a;读取本地Bookmarks文件&#xff08;仅谷歌内核浏览器&#xff09; 谷歌内核的浏览器本地会有Bookmarks文件&#xff0c;放了所有的书签数据&#xff0c;直接…

我的docker随笔43:问答平台answer部署

本文介绍开源问答社区平台Answer的容器化部署。 起因 笔者一直想搭建一个类似stack overflower这样的平台&#xff0c;自使用了Typora&#xff0c;就正式全面用MarkdownTyporagit来积累自己的个人知识库&#xff0c;但没有做到web化&#xff0c;现在也还在探索更好的方法。 无…

MyBatisPlus基础操作之增删改查

目录 一、基本使用 1.1 插入数据 1.2 删除操作 1.3 更新操作 二、条件构造器Wrapper 2.1 常用AbstractWrapper方法 2.1.1 示例一 2.2.2 示例二 2.2.3 示例三 2.2 常用QueryWrapper方法 2.2.1 示例一 2.2.2 示例二 2.2.3 示例三&#xff08;常用&#xff09; 2.3 常…

PgSQL技术内幕 - case when表达式实现机制

PgSQL技术内幕 - case when表达式实现机制 CASE表达式如同 C语言中的if/else语句一样&#xff0c;为SQL添加了条件逻辑处理能力&#xff0c;可以根据不同条件返回不同结果。PgSQL支持两种语法&#xff1a;简单表达式和搜索表达式。 1、搜索表达式 语法如下&#xff1a; CASE WH…

android studio下开发flutter

文章目录 1. 配置环境 https://flutter.cn/docs/get-started/install2. android studio下开发flutter 1. 配置环境 https://flutter.cn/docs/get-started/install 2. android studio下开发flutter 打开Android Studio -> File -> Settings -> Plugins 搜索Dart插件 …

java_error_in_pycharm.hprof文件是什么?能删除吗?

java_error_in_pycharm.hprof文件是什么&#xff1f;能删除吗&#xff1f; &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;hprof格式文件介绍&#x1f333;&#x1f333;java_error_in_pycharm.hprof文件什么情况下能删除&#x1f333;&…

简化版SpringMVC

简化版SpringMVC web.xml xml version"1.0" encoding"UTF-8"?> <web-app version"2.5" xmlns"http://java.sun.com/xml/ns/javaee" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation&quo…

科技王座“座次变更”:英伟达超越亚马逊在即,距离谷歌也不远

英伟达的市值即将超过亚马逊&#xff0c;为二十年来首次。 截至2月7日收盘&#xff0c;英伟达市值达到1.73万亿美元&#xff0c;逼近亚马逊1.77万亿美元的市值&#xff0c;距离谷歌1.82万亿美元的市值也不远。 对人工智能的热情推升英伟达的股价去年以来一路飙涨&#xff0c;受…