当前位置: 首页 > article >正文

Python教学-最常用的标准库之一——OS库

os 库是 Python 标准库中的一个模块,它提供了一种方便的方式来使用操作系统相关的功能。os 模块提供了很多函数,可以用来处理文件和目录、访问环境变量、执行系统命令等。以下是一些常用的 os 模块的功能和示例:

1. 文件和目录操作

1.1 当前工作目录
  • os.getcwd():获取当前工作目录。
  • os.chdir(path):改变当前工作目录。
import oscurrent_dir = os.getcwd()
print("当前工作目录:", current_dir)os.chdir('/path/to/new/directory')
new_dir = os.getcwd()
print("改变后的工作目录:", new_dir)
1.2 创建和删除目录
  • os.mkdir(path):创建单个目录。
  • os.makedirs(path, exist_ok=False):递归创建目录。如果 exist_ok=True,目录已存在时不报错。
  • os.rmdir(path):删除单个空目录。
  • os.removedirs(path):递归删除目录。
os.makedirs('dir1/dir2', exist_ok=True)
os.rmdir('dir1/dir2')  # 只能删除空目录
os.removedirs('dir1/dir2')  # 递归删除
1.3 列出目录内容
  • os.listdir(path):列出指定目录下的所有文件和目录。
files_and_dirs = os.listdir('.')
print("当前目录下的文件和目录:", files_and_dirs)
1.4 文件路径操作
  • os.path.join(path, *paths):智能拼接路径。
  • os.path.abspath(path):获取绝对路径。
  • os.path.dirname(path):获取目录名。
  • os.path.basename(path):获取文件名。
  • os.path.exists(path):检查路径是否存在。
  • os.path.isfile(path):检查路径是否为文件。
  • os.path.isdir(path):检查路径是否为目录。
  • os.path.getsize(path):获取文件大小(字节)。
full_path = os.path.join('dir1', 'file.txt')
abs_path = os.path.abspath(full_path)
dir_name = os.path.dirname(abs_path)
file_name = os.path.basename(abs_path)
print("完整路径:", full_path)
print("绝对路径:", abs_path)
print("目录名:", dir_name)
print("文件名:", file_name)
print("路径是否存在:", os.path.exists(abs_path))
print("是否为文件:", os.path.isfile(abs_path))
print("是否为目录:", os.path.isdir(dir_name))
if os.path.isfile(abs_path):print("文件大小:", os.path.getsize(abs_path), "字节")

2. 环境变量

  • os.getenv(key, default=None):获取环境变量的值,如果不存在则返回 default
  • os.environ:获取一个包含所有环境变量的字典。
  • os.putenv(key, value):设置环境变量(仅在某些平台上有效,建议使用 os.environ)。
  • os.unsetenv(key):删除环境变量(仅在某些平台上有效)。
# 获取环境变量
home_dir = os.getenv('HOME')
print("HOME 环境变量:", home_dir)# 设置环境变量
os.environ['MY_VAR'] = 'my_value'
print("MY_VAR 环境变量:", os.getenv('MY_VAR'))# 删除环境变量(仅在支持 unsetenv 的平台上有效)
# os.unsetenv('MY_VAR')

3. 执行系统命令

  • os.system(command):在子终端执行系统命令。
  • os.popen(cmd, mode='r', buffering=-1):打开一个管道连接到或从一个命令。
  • subprocess 模块:更强大和灵活的子进程管理模块,建议使用 subprocess 代替 os.systemos.popen
# 使用 os.system 执行命令
exit_code = os.system('ls -l')
print("命令执行后的退出码:", exit_code)# 使用 os.popen 执行命令并读取输出
process = os.popen('ls -l')
output = process.read()
print("命令输出:\n", output)
process.close()

4. 文件和目录权限

  • os.chmod(path, mode):改变文件或目录的权限。
  • os.chown(path, uid, gid):改变文件或目录的所有者和组(仅在 Unix 上有效)。
# 假设你有一个文件 'file.txt'
# os.chmod('file.txt', 0o755)  # 设置文件权限为 rwxr-xr-x

5. 临时文件和目录

  • tempfile.TemporaryFile():创建一个临时文件,文件关闭后会自动删除。
  • tempfile.NamedTemporaryFile():创建一个命名临时文件,文件关闭后会自动删除。
  • tempfile.mkdtemp():创建一个临时目录,可以手动删除。
  • tempfile.TemporaryDirectory():创建一个临时目录,目录关闭后会自动删除。
import tempfile# 创建一个临时文件
with tempfile.TemporaryFile() as temp_file:temp_file.write(b'Hello, World!')temp_file.seek(0)print(temp_file.read())# 创建一个命名临时文件
with tempfile.NamedTemporaryFile(delete=False) as named_temp_file:temp_file_name = named_temp_file.nameprint("命名临时文件:", temp_file_name)# 可以手动删除文件# os.remove(temp_file_name)# 创建一个临时目录
temp_dir = tempfile.mkdtemp()
print("临时目录:", temp_dir)
# 可以手动删除目录
# os.rmdir(temp_dir) 或 os.removedirs(temp_dir) 如果是递归创建的# 创建一个自动删除的临时目录
with tempfile.TemporaryDirectory() as temp_dir_ctx:print("自动删除的临时目录:", temp_dir_ctx)

这些只是 os 模块中的一些基本功能,实际上 os 模块的功能非常丰富,适用于各种操作系统相关的任务。如果需要更复杂的子进程管理,建议查阅 subprocess 模块。

相关文章:

Python教学-最常用的标准库之一——OS库

os 库是 Python 标准库中的一个模块,它提供了一种方便的方式来使用操作系统相关的功能。os 模块提供了很多函数,可以用来处理文件和目录、访问环境变量、执行系统命令等。以下是一些常用的 os 模块的功能和示例: 1. 文件和目录操作 1.1 当前…...

Ollama+Deepseek+AnythingLLM搭建本地知识库

OllamaDeepseek的配置可以参考OllamaDeepseekopen-webui搭建本地知识库-CSDN博客 一,AnythingLLM安装 AnythingLLM官网地址AnythingLLM | The all-in-one AI application for everyone 下载 win64 下载完毕后安装。 二,AnythingLLM 配置 新建工作区 …...

合并区间(56)

56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:vector<vector<int>> merge(vector<vector<int>>& intervals) {if (intervals.size() 1) {return intervals;}//现根据每一项的第一个值&#…...

再探动态规划--背包问题

背包问题常见类型&#xff1a; 动态规划问题核心就两个&#xff1a;状态转移方程和遍历顺序 如果求组合数就是外层for循环遍历物品&#xff0c;内层for遍历背包。如果求排列数就是外层for遍历背包&#xff0c;内层for循环遍历物品。 状态转移方程是动态规划问题中的核心&…...

Javascript使用Sodium库实现 aead_xchacha20poly1305_ietf加密解密,以及与后端的密文交互

Node.js环境安装 sodium-native (其他库可能会出现加密解密失败&#xff0c;如果要使用不一样的库&#xff0c;请自行验证) npm install sodium-native 示例代码&#xff0c;使用的是 sodium-native v4.3.2 (其他版本可能会有变化&#xff0c;如果要使用&#xff0c;请自行验…...

力扣-贪心-376 摆动序列

思路 记录前一个差值和后一个差值&#xff0c;需要分析很多情况 只有在发生波动的时候才更新差值——单调中有平坡前一个差值0时也更新差值——平坡留下最左边元素最后一个元素不记录.默认从最后一个有坡度 代码 class Solution { public:int wiggleMaxLength(vector<in…...

什么是“可迭代”

在 Python 中&#xff0c;“可迭代”&#xff08;Iterable&#xff09;是一个非常重要的概念&#xff0c;它指的是任何可以被逐个访问其元素的对象。换句话说&#xff0c;如果一个对象支持迭代操作&#xff08;比如可以通过 for 循环逐个访问其元素&#xff09;&#xff0c;那么…...

【算法与数据结构】单调队列

目录 单调队列 使用单调队列维护滑动窗口 具体过程&#xff1a; 代码实现&#xff1a; 复杂度分析&#xff1a; 使用单调队列优化动态规划 例题 单调队列 单调队列(deque)是一种特殊的队列&#xff0c;队列中的元素始终按严格递增或者递减排列。这样就可以保证队头元素…...

Mysql-------事务

事务 一、事务 &#xff08;一&#xff09;什么是事务&#xff1a; MySQL数据库事务&#xff1a;&#xff08;database transaction&#xff09;: 事务是由一组SQL语句组成的逻辑处理单元&#xff0c;这些操作要么全做要么全不做&#xff0c;是一个不可分割的工作单位。 ※…...

【Java进阶学习 第五篇】JDK8、9中的接口新特性

接口新特性 可以提升代码的复用性&#xff0c;减少冗余 JDK8中接口的新特性主要可以允许调用默认方法和静态方法&#xff1b;JDK9中接口的新特性为可以运行调用私有方法供本类方法使用 JDK8新特性 接口中可以定义有方法体的方法&#xff08;默认或静态&#xff09; 允许调用…...

TypeScript学习:初学

安装等配置指令 安装TypeScript npm i typescript -g 检查版本 tsc -v npx tsc -v 运行ts文件及js文件 npx tsc 文件名.ts node 文件名.js 安装ts-node脚手架 npm i ts-node -g 检查脚手架版本 npx ts-node -v 初始化ts状态 npx tsc -- init 使用脚手架运行ts文件…...

基于Martin的全国基础底图实现

概述 前面有文章基于Martin实现MapboxGL自定义底图分享了Martin的使用&#xff0c;本文使用网络收集的数据实现了全国基础数据的收集和基础底图。 实现后效果 实现 1. 数据准备 实例中包含如下数据&#xff1a; 边界线和九段线数据省边界面数据省会城市点数据市边界面数据…...

网络安全:防范NetBIOS漏洞的攻击

稍微懂点电脑知识的朋友都知道&#xff0c;NetBIOS 是计算机局域网领域流行的一种传输方式&#xff0c;但你是否还知道&#xff0c;对于连接互联网的机器来讲&#xff0c;NetBIOS是一大隐患。 漏洞描述 NetBIOS(Network Basic Input Output System&#xff0c;网络基本输入输…...

一周学会Flask3 Python Web开发-客户端状态信息Cookie以及加密

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili HTTP是无状态&#xff08;stateless)协议。也就是说&#xff0c;在一次请求响应结束后&#xff0c;服务器不会留下任何关于对…...

机器学习面试八股文——决战金三银四

大家好&#xff0c;这里是好评笔记&#xff0c;公主 号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本笔记的任务是解读机器学习实践/面试过程中可能会用到的知识点&#xff0c;内容通俗易懂&#xff0c;入门、实习和校招轻松搞定。 公主号合集地址 点击进入优惠地…...

Visual studio 2022 将打开文件的方式由单击改为双击

1. 打开vs2022&#xff0c;选择Tools -> Options打开Options设置页面 2. 在左侧依次展开Environment, 选择Tabs and Windows 3. 在右侧面板往下拖拽滚动条&#xff0c;找到Preview Tab section, unchecked "Preview selected files in Solution Explorer (Altclick t…...

【Akashic Records】THE EGG

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Akashic Records 文章目录 &#x1f4af;观后感一、宇宙的孤寂与个人成长&#xff1a;二、选择与责任&#xff1a;三、灵性与世界的连接&#xff1a;四、选择如何改变命运&#xff1a;结语&#xff1a; &#x1f4af;…...

Tio-Boot 集成 Spring Boot 实现即时通讯功能全解析

Tio-Boot 集成 Spring Boot 实现即时通讯功能全解析&#xff08;详细版&#xff09; 一、Tio-Boot 简介 Tio-Boot 是基于 Tio 框架的 Spring Boot Starter 扩展&#xff0c;提供高性能、低延迟的网络通信能力&#xff0c;支持 TCP/UDP 协议及 WebSocket 协议&#xff0c;适用…...

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(一)

项目包含5个模块 1.首页 (聊天主页) 2.注册 3.登录 4.个人资料 5.设置主题 一、配置开发环境 建立项目文件夹 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 创建前端项目时我们选择javascrip…...

ant design 疑惑记录 Dropdown.Button

onMenuClick是点击展开的 子项的点击事件 Actions的点击事件是什么&#xff1f; 解答&#xff1a; 也是个按钮Button&#xff0c;也有自己的onClick事件 const onMenuClick (e) > {console.log(click, e); }; const otherClick (e) > {console.log(其他操作主按钮…...

Perplexity AI:通过OpenAI与DeepSeek彻底革新搜索和商业策略

在不断发展的AI领域,Perplexity AI已经成为一个独特的力量,正在重塑我们搜索信息的方式。 通过结合前沿的AI工具,Perplexity提供了更智能、更像人类的搜索体验。那么,这个平台与竞争对手有何不同呢? 让我们一起探索Perplexity的商业策略、它如何通过变现服务以及如何利用…...

什么是Firehose?它的作用是什么?

目录 1. Firehose 的作用 2. Firehose 文件&#xff08;prog_firehose.mbn&#xff09; 如何获取 Firehose 文件&#xff1f; 3. Firehose 模式&#xff08;EDL Mode&#xff09; 如何进入 EDL 模式&#xff1f; 4. Firehose 命令&#xff08;低级操作&#xff09; 5. F…...

rkipc main.c 中 rk_param_init函数分析

rk_param_init函数 这个函数是用来读取配置文件进行参数配置 这个函数在 luckfox-pico/project/app/rk_smart_door/smart_door/common/uvc/param/param.c 中 这个函数在main函数中被调用 //通过-c 配置文件路径 把配置文件传进来 case c:rkipc_ini_path_ optarg;//调用&am…...

SAP on Microsoft Azure Architecture and Administration (Ravi Kashyap)

SAP on Microsoft Azure Architecture and Administration (Ravi Kashyap)...

Missing required prop: “maxlength“

背景&#xff1a; 封装一个使用功能相同使用频率较高的input公共组件作为子组件&#xff0c;大多数长度要求为200&#xff0c;且实时显示统计子数&#xff0c;部分input有输入提示。 代码实现如下&#xff1a; <template><el-input v-model"inputValue" t…...

在windows下安装windows+Ubuntu16.04双系统(下)

这篇文章的内容主要来源于这篇文章&#xff0c;为正式安装windowsUbuntu16.04双系统部分。在正式安装前&#xff0c;若还没有进行前期准备工作&#xff08;1.分区2.制作启动u盘&#xff09;&#xff0c;见《在windows下安装windowsUbuntu16.04双系统(上)》 二、正式安装Ubuntu …...

数据库驱动免费下载(Oracle、Mysql、达梦、Postgresql)

数据库驱动找起来好麻烦&#xff0c;我整理到了一起&#xff0c;需要的朋友免费下载&#xff1a;驱动下载 目前收录了Oracle、Mysql、达梦、Postgresql的数据库驱动的多个版本&#xff0c;后续可能会分享更多。...

业务流程相关的权威认证和培训有哪些

业务流程的认证和培训种类繁多&#xff0c;旨在帮助专业人士掌握业务流程管理 (BPM) 的知识和技能&#xff0c;从而提升个人职业发展和组织运营效率。下面分别介绍&#xff1a; 一、 业务流程认证和培训的种类 业务流程的认证和培训可以大致分为以下几类&#xff0c;涵盖了不…...

java(spring boot)实现向deepseek/GPT等模型的api发送请求/多轮对话(附源码)

我们再启动应用并获取api密钥后就可以对它发送请求了&#xff0c;但是官方文档对于如何进行多轮对话以及怎么自定义参数并没有说的很清楚&#xff0c;给的模板也没有java的&#xff0c;因此我们需要自己实现。 import org.json.JSONArray; import org.json.JSONObject;import j…...

vivado修改下载器下载速率

Error Launching Program X Error while launching program: fpga configuration failed. DONE PIN is not HIGH 原因是下载器速度太快了。先从任务管理器中关闭hw_server.exe试一下,要是不行就按下面三种方法解决。 第一种方法可以不用修改下载速度,直接先从vivado中将bit流…...