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.mzph.cn/news/675312.shtml

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

相关文章

数据结构 - 线索树

一、 为什么要用到线索二叉树&#xff1f; 我们先来看看普通的二叉树有什么缺点。下面是一个普通二叉树&#xff08;链式存储方式&#xff09;&#xff1a; 乍一看&#xff0c;会不会有一种违和感&#xff1f;整个结构一共有 7 个结点&#xff0c;总共 14 个指针域&#xff0c…

WordPress函数wptexturize的介绍及用法示例,字符串替换为HTML实体

在查看WordPress你好多莉插件时发现代码中使用了wptexturize()函数用来随机输出一句歌词&#xff0c;下面boke112百科就跟大家一起来学习一下WordPress函数wptexturize的介绍及用法示例。 WordPress函数wptexturize介绍 wptexturize( string $text, bool $reset false ): st…

Ubuntu搭建计算集群

计算机硬件和技术的发展使得高性能模拟和计算在生活和工作中的作用逐渐显现出来&#xff0c;无论是计算化学&#xff0c;计算物理和当下的人工智能都离不开高性能计算。笔者工作主要围绕计算化学和物理开展&#xff0c;亦受限于自身知识和技术所限&#xff0c;文中只是浅显地尝…

HarmonyOS class类对象基础使用

按我们之前的写法 就是 Entry Component struct Dom {p:Object {name: "小猫猫",age: 21,gf: {name: "小小猫猫",age: 18,}}build() {Row() {Column() {// ts-ignoreText(this.p.gf.name)}.width(100%)}.height(100%)} }直接用 Object 一层一层往里套 这…

C++进阶(十三)异常

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、C语言传统的处理错误的方式二、C异常概念三、异常的使用1、异常的抛出和捕获2、异常的重新…

java之spring AOP

AOP 面向切面编程&#xff0c; 切入点&#xff0c;就是你写的函数&#xff0c;装饰器&#xff0c;装饰到那些函数上 在哪里生效 引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifact…

网络学习:数据链路层VLAN原理和配置

一、简介&#xff1a; VLAN又称为虚拟局域网&#xff0c;它是用来将使用路由器的网络分割成多个虚拟局域网&#xff0c;起到隔离广播域的作用&#xff0c;一个VLAN通常对应一个IP网段&#xff0c;不同VLAN通常规划到不同IP网段。划分VLAN可以提高网络的通讯质量和安全性。 二、…

MySQL进阶查询篇(5)-事务的隔离级别与应用

数据库事务(Transaction)是指作为一个单元执行的一系列操作&#xff0c;要么全部成功完成&#xff0c;要么全部失败回滚。数据库事务具有四个特性&#xff0c;即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。本文将重点介绍MySQL数据库中的…

2024年华为OD机试真题-螺旋数字矩阵-Java-OD统一考试(C卷)

题目描述: 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m(0 < n ≤ 999,0 < m ≤ 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵。 小明对这个矩阵有些要求: 1.每行数字的…

跟着小德学C++之TCP基础

嗨&#xff0c;大家好&#xff0c;我是出生在达纳苏斯的一名德鲁伊&#xff0c;我是要立志成为海贼王&#xff0c;啊不&#xff0c;是立志成为科学家的德鲁伊。最近&#xff0c;我发现我们所处的世界是一个虚拟的世界&#xff0c;并由此开始&#xff0c;我展开了对我们这个世界…

红队打靶练习:GLASGOW SMILE: 1.1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、gobuster 2、dirsearch WEB web信息收集 /how_to.txt /joomla CMS利用 1、爆破后台 2、登录 3、反弹shell 提权 系统信息收集 rob用户登录 abner用户 penguin用户 get root flag 信息收集…

flutter 国内源

Flutter 在中国由于网络原因&#xff0c;从官方默认的国外源下载Dart包和Flutter SDK可能会比较慢或者不稳定。为了加速依赖包的获取与Flutter SDK的安装&#xff0c;可以使用国内镜像源。以下是一些国内常用的Flutter和Dart包镜像源&#xff1a; 清华大学开源软件镜像站 Flu…

计算机网络(第六版)复习提纲29

第六章&#xff1a;应用层 SS6.1 域名系统DNS 1 DNS被设计为一个联机分布式数据库系统&#xff0c;并采用客户服务器方式&#xff08;C/S&#xff09; 2 域名的体系结构 3 域名服务器及其体系结构 A 域名服务器的分类 1 根域名服务器 2 顶级域名服务器&#xff08;TLD服务器&a…

Gitlab和Jenkins集成 实现CI (一)

版本声明 部署时通过docker拉取的最新版本 gitlab: 16.8 jenkins: 2.426.3 安装环境 可参考这篇文章 停止防火墙 由于在内网&#xff0c;这里防火墙彻底关掉&#xff0c;如果再外网或者云上的悠着点 systemctl stop firewalled systemctl disable firewalledsystemctl sto…

K8S之运用亲和性设置Pod的调度约束

亲和性 Node节点亲和性硬亲和实践软亲和性实践 Pod节点亲和性和反亲和性pod亲和性硬亲和实践 pod反亲和性 Pod 的yaml文件里 spec 字段中包含一个 affinity 字段&#xff0c;使用一组亲和性调度规则&#xff0c;指定pod的调度约束。 kubectl explain pods.spec.affinity 配置…

【代码】Processing笔触手写板笔刷代码合集

代码来源于openprocessing&#xff0c;考虑到国内不是很好访问&#xff0c;我把我找到的比较好的搬运过来&#xff01; 合集 参考&#xff1a;https://openprocessing.org/sketch/793375 https://github.com/SourceOf0-HTML/processing-p5.js/tree/master 这个可以体验6种笔触…

ubuntu22.04安装部署03: 设置root密码

一、前言 ubuntu22.04 安装完成以后&#xff0c;默认root用户是没有设置密码的&#xff0c;需要手动设置。具体的设置过程如下文内容所示&#xff1a; 相关文件&#xff1a; 《ubuntu22.04装部署01&#xff1a;禁用内核更新》 《ubuntu22.04装部署02&#xff1a;禁用显卡更…

简单聊聊go语言中引用模块的版本控制以及invalid: should be v0 or v1, not v2问题的解决

文章目录 前言具体示例手动升级依赖库should be v0 or v1, not v2总结 前言 如果你接触go语言比较早&#xff0c;一定有过当年所有go源码全部放入 GOPATH 下的混乱经历&#xff0c;不过发展到今天&#xff0c;go的包管理使用 go.mod 和 go.work 已经能得心应手&#xff0c;满足…

macos安装local模式spark

文章目录 配置说明安装hadoop安装Spark测试安装成功 配置说明 Scala - 3.18 Spark - 3.5.0 Hadoop - 3.3.6 安装hadoop 从这里下载相应版本的hadoop下载后解压&#xff0c;配置系统环境变量 > sudo vim /etc/profile添加以下两行 export HADOOP_HOME/Users/collinsliu/…

Unity类银河恶魔城学习记录4-4 4-5 P57-58 On Hit Impactp- Attack‘direction fix源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic;…