Python基础04-操作系统中的文件与目录操作

在与操作系统交互时,我们经常需要执行文件和目录的操作。Python提供了丰富的库来帮助我们完成这些任务。以下是一些常见的操作,以及如何使用Python代码来实现它们。

1. 导航文件路径

在不同的操作系统中,文件路径的格式可能不同。Python的os.path模块可以帮助我们创建与操作系统兼容的路径。

import os
# 创建一个与底层操作系统兼容的路径
path = os.path.join('mystic', 'forest', 'artifact.txt')
# 获取该路径所在的目录
directory = os.path.dirname(path)
# 揭示文件的名称
artifact_name = os.path.basename(path)

2. 列出目录内容

要查看一个目录下的所有文件和子目录,可以使用os.listdir

import os
# 列出'enchanted_grove'目录下的所有内容
contents = os.listdir('enchanted_grove')
print(contents)

3. 创建目录

使用os.mkdir可以创建单个目录,而os.makedirs可以创建多级目录。

import os
# 创建一个名为'alchemy_lab'的目录
os.mkdir('alchemy_lab')
# 创建一个包含多个子目录的路径
os.makedirs('alchemy_lab/potions/elixirs')

4. 删除文件和目录

删除文件或目录可以使用os.removeos.rmdirshutil.rmtree

import os
import shutil
# 删除一个名为'unnecessary_scroll.txt'的文件
os.remove('unnecessary_scroll.txt')
# 删除一个空的目录'abandoned_hut'
os.rmdir('abandoned_hut')
# 删除一个目录及其所有内容,包括子目录
shutil.rmtree('cursed_cavern')

5. 执行Shell命令

通过subprocess模块,我们可以在Python中执行Shell命令。

import subprocess
# 执行'echo'命令并捕获输出
result = subprocess.run(['echo', 'Revealing the arcane'], capture_output=True, text=True)
print(result.stdout)

6. 处理环境变量

os.environ是一个字典,它包含了环境变量。

import os
# 读取'PATH'环境变量
path = os.environ.get('PATH')
# 创建一个新的环境变量
os.environ['MAGIC'] = 'Arcane'

7. 更改当前工作目录

使用os.chdir可以改变当前工作目录。

import os
# 切换到'arcane_library'目录
os.chdir('arcane_library')

8. 检查路径存在性及类型

os.path.existsos.path.isdiros.path.isfile可以帮助我们检查路径的存在性及其类型。

import os
# 检查'mysterious_ruins'路径是否存在
exists = os.path.exists('mysterious_ruins')
# 判断'mysterious_ruins'是否是目录
is_directory = os.path.isdir('mysterious_ruins')
# 确定'ancient_manuscript.txt'是否是文件
is_file = os.path.isfile('ancient_manuscript.txt')

9. 使用临时文件和目录

tempfile模块提供了创建临时文件和目录的功能。

import tempfile
# 创建一个临时文件,并指定不自动删除
temp_file = tempfile.NamedTemporaryFile(delete=False)
print(temp_file.name)
# 创建一个临时目录
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)

10. 获取系统信息

通过osplatform模块,我们可以获取操作系统的名称和详细信息。

import os
import platform
# 获取操作系统的名称,如'posix', 'nt', 'java'
os_name = os.name
# 获取详细的系统信息,如'Linux', 'Windows', 'Darwin'
system_info = platform.system()

11. 文件权限和属性

os.chmod可以用来改变文件的权限,而os.stat可以获取文件的属性。

import os
# 更改文件权限,这里设置为可读写
os.chmod('spell_book.txt', 0o644)
# 获取文件属性
file_stats = os.stat('spell_book.txt')
print(file_stats)

12. 文件复制和移动

shutil.copyshutil.move分别用于复制和移动文件。

import shutil
# 复制文件
shutil.copy('spell_book.txt', 'backup_spell_book.txt')
# 移动文件
shutil.move('backup_spell_book.txt', 'ancient_tome.txt')

13. 文件比较

filecmp模块可以用来比较两个文件是否相同。

import filecmp
# 比较两个文件是否相同
is_same = filecmp.cmp('spell_book.txt', 'ancient_tome.txt')
print(is_same)

14. 文件锁定

fcntl模块(在UNIX系统上)可以用于锁定文件。

import fcntl
import os
# 锁定文件,以防止其他进程同时修改
with open('grimoire.txt', 'w') as f:fcntl.lockf(f, fcntl.LOCK_EX)# 进行文件操作f.write('Secret incantations')# 解锁文件fcntl.lockf(f, fcntl.LOCK_UN)

15. 符号链接和硬链接

os.symlinkos.link分别用于创建符号链接和硬链接。

import os
# 创建一个指向'grimoire.txt'的符号链接
os.symlink('grimoire.txt', 'grimoire_link.txt')
# 创建一个硬链接
os.link('grimoire.txt', 'grimoire_hardlink.txt')

通过这些操作,我们可以在Python中高效地管理文件系统。这些操作覆盖了文件和目录管理的大部分基本需求,无论是在脚本编写还是应用程序开发中都非常有用。

civilpy:Python数据分析及可视化实例目录944 赞同 · 36 评论文章​编辑

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

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

相关文章

提取出图像的感兴趣区域

这是我们的原图像 将图像的数值统计后进行条形图展示 import matplotlib.pyplot as plt from PIL import Image import numpy as np# 图像路径 image_path r"D:\My Data\Figure\OIP.jpg"# 打开图像 image Image.open(image_path)# 将图像转换为numpy数组 image_ar…

关于实验报告添加题注为0以及页面断层的解决办法

1.事情起源于最近在写实验报告和课设说明书时出现图的题注是图0-1等不遵循设置的章节标号,于是我在查询和个人尝试后发现必须设置多级编号并且自定义设置对应的样式为标题几 另外注意设置后必须题注也要设置对应的样式,否则还是0-1,不用编辑域…

全球30米100%水陆覆盖高程

数据是GIS的血液。 熟悉水经注的朋友都应该知道,我们可以为大家提供全球30米和全球12.5米的高程数据,但这两种数据都无法达到全球覆盖。 你可以从《40TB全球12.5米高程DEM原始数据》与《700G全球30米高程DEM原始数据》等文中了解这两种数据的详细说明。…

git简介及安装

Git | Git简介与安装 文章目录 Git | Git简介与安装一、Git简介二、Git安装Linux-centosLinux-ubuntu 一、Git简介 存在需求:对于一个文档,由于编写思路或者当前文档丢失,可能存在想要历史版本的需求,并且需要知道每个版本都修改了…

忘记宝塔账号密码 如何解决

cd /www/server/panel && btpython tools.py panel testpasswd参考 https://www.bt.cn/bbs/thread-1172-1-1.html

(C++) 树状数组

目录 一、介绍 二、一维树状数组 2.1 区间长度 2.2 前驱和后继 2.3 查询前缀和 2.4 点更新 三、一维数组的实现 3.1 区间长度函数 3.2 前缀和 3.3 插入/更新 3.4 封装成类 一、介绍 树状数组(Binary Indexed Tree,BIT),又称为 …

39. UE5 RPG角色释放技能时转向目标方向

在上一篇,我们实现了火球术可以向目标方向发射,并且还可以按住Shift选择方向进行攻击。技能的问题解决,现在人物释放技能时,无法朝向目标方向,接下来我们解决人物的问题。 实现思路: 我们将使用一个官方的…

大一考核题解

在本篇中,将尽力使用多种解法,来达到一题多练的效果。 1: 1.原题链接: 238. 除自身以外数组的乘积 - 力扣(LeetCode) 这道题首先一眼肯定想到拿整体的积除以当前元素,将结果作为ans,…

Redis的主从复制

引入:分布是系统涉及到一个非常关键的问题:单点问题(如果摸个服务器程序,只有一个节点(只搞一个物理服务器,来部署这个服务器程序)会出现: 1.可用性问题,如果这个机器挂…

轧铝机液压站比例阀控制器

轧铝机液压站是用于铝材轧制过程中提供动力和控制的系统,它对于确保铝材的质量至关重要。轧铝机液压站通常包含以下几个关键组成部分: 液压泵:为系统提供压力油,是液压系统的动力源。 控制阀组:包括方向控制阀、压力控…

由于磁盘空间不够导致服务无法访问的情况

昨天服务出现了一些“小状况”,这里做下记录,为了以后类似的问题,可以作为参考。 具体情况是,如下: 本来一直访问都好好的服务突然间访问不到了,首先确定了下服务器上的 docker 服务是否正常运行。确认正…

【触摸案例-触摸事件介绍 Objective-C语言】

一、触摸事件 1.接下来,我们来说这个,触摸事件, iOS当中的事件,可以分为三大类: 1)触摸事件 2)加速计事件 3)远程控制事件 事件呢,这个里面呢,使用app的过程当中呢,产生各种各样的事件,事件呢,分为三大类,在iOS里边儿啊,分为三大类,首先,有一个叫做触摸事…

MySQL中的“IS NULL”优化

MySQL中的“IS NULL”优化 在MySQL数据库中,查询性能的优化是保持应用高效运行的关键。一个常见的情况是处理空值(NULL),尤其是在查询条件中使用IS NULL时。 理解IS NULL 在MySQL中,IS NULL运算符用于检查列中的值是…

2024年学浪视频怎么保存到本地相册

2024年已至,学浪应用上的视频购买人数持续攀升,然而一些课程已不再提供永久回放,这对那些在学浪购买了课程的人来说确实是一大困扰。在这里,我将为大家提供一种方法,让我们能够将学浪视频中那些非永久回放的内容下载到…

游戏录屏软件免费使用,超高清画质,让你爱不释手!

“最近迷上了一款动作冒险游戏,里面的剧情和打斗场面简直太燃了!就想通过录屏的方式,把我自己的游戏过程保存下来。可是我发现市面上的录屏软件不是免费的就是功能有限,你们有没有用过什么好用又免费的游戏录屏软件啊?…

教科系统诗词大会竞赛活动方案

本次诗词大会竞赛由个人追逐赛、亲友团淘汰赛、冠军争霸赛三部分组成。 一、个人追逐赛 由每个参赛团选出一位挑战者,共六位挑战者首先参加个人追逐赛的比拼,每位挑战者最多可答九道题,题型可为识别诗句题、对句题、填字题,题目可…

【数据结构项目】通讯录

个人主页点这里~ 原文件在gitee里~ 通讯录的实现 基于动态顺序表实现通讯录项目1、功能要求2、代码实现file.hfile.cList.hList.ctest.c 基于动态顺序表实现通讯录项目 准备:结构体、动态内存管理、顺序表、文件操作 1、功能要求 ①能够存储100个人的通讯信息 ②…

arm版Linux下安装大数据集群各种组件

背景:由于本人是用的Macbookpro m2来进行开发的,很多环境和Intel芯片的都不一样,期间安装各种软件遇到各种问题,为了以后不走之前的老路,现记录各种软件的安装步骤。 系统安装组件说明 序号组件名称组件版本1jdkjdk-…

如何部署npm私有仓库以及在项目中如何使用

如何部署npm私有仓库以及在项目中如何使用 为什么要部署npm私有仓库? 安全性:私有仓库允许团队存放内部研发的、不宜公开发布的代码包,只对特定用户或者团队可见和可用,从而保护公司的知识产权和商业秘密。模块的复用性&#xf…

Oracle进阶(2)——物化视图案例延伸以及序列、同义词

一、物化视图 物化视图(Materialized View)是 Oracle 数据库中的一个对象,它是一个预先计算和存储的查询结果集,类似于视图,但与视图不同的是,物化视图会将查询结果保存在物理存储中,而不是动态…