首页 > 编程语言 >python 常见OS基本操作

python 常见OS基本操作

时间:2024-09-03 23:36:57浏览次数:7  
标签:python os directory path print 基本操作 OS 目录

python 常见OS基本操作

Python 的 os 模块提供了与操作系统交互的各种功能。下面按照一些常见的使用场景,按顺序介绍 os 模块的一些基本操作及其示例代码。

1. 获取和改变当前工作目录

首先,通常我们会获取当前的工作目录,然后可能会改变工作目录。

python深色版本

import os

# 获取当前工作目录
print("当前工作目录:", os.getcwd())

# 改变工作目录
os.chdir('/path/to/new/directory')
print("新的工作目录:", os.getcwd())

2. 目录操作

接下来,我们可以创建新的目录或者删除旧的目录。

python深色版本

# 创建目录
os.mkdir('new_directory')  # 创建单个目录
os.makedirs('parent_directory/sub_directory')  # 创建多级目录

# 删除目录
os.rmdir('empty_directory')  # 删除空目录
os.removedirs('parent_directory/empty_sub_directory')  # 删除多级空目录

3. 文件操作

接着,我们可以创建、打开、读写文件,也可以删除文件。

# 创建或打开文件
with open('example.txt', 'w') as file:
    file.write('Hello, world!')

# 读取文件
with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

# 删除文件
os.remove('example.txt')

4. 文件和目录列表

我们可以查看指定目录下的文件和子目录。

python深色版本

# 列出当前目录下的所有文件和目录
print("当前目录下的文件和目录:")
for entry in os.listdir('.'):
    print(entry)

# 判断是否为文件或目录
entries = os.listdir('.')
for entry in entries:
    full_path = os.path.join('.', entry)
    if os.path.isfile(full_path):
        print(f"{entry} 是文件")
    elif os.path.isdir(full_path):
        print(f"{entry} 是目录")

5. 重命名文件或目录

我们还可以重命名文件或目录。

python深色版本

# 重命名文件
os.rename('old_file.txt', 'new_file.txt')

# 重命名目录
os.rename('old_directory', 'new_directory')

6. 文件路径操作

对文件路径进行分割、组合等操作。

python深色版本

# 获取文件的绝对路径
print("文件的绝对路径:", os.path.abspath('example.txt'))

# 组合路径
print("组合后的路径:", os.path.join('/path/to', 'example.txt'))

# 分割路径
print("分割路径:", os.path.split('/path/to/example.txt'))

# 获取文件扩展名
print("文件扩展名:", os.path.splitext('example.txt')[1])

7. 环境变量

获取系统环境变量。

python深色版本

# 获取环境变量
print("环境变量 PATH:", os.environ.get('PATH'))

8. 运行系统命令

执行系统命令。

python深色版本

# 运行系统命令
os.system('echo Hello from the system command line!')

9. 文件权限操作

更改文件权限(需要管理员权限)。

python深色版本

import stat

# 更改文件权限
os.chmod('example.txt', stat.S_IRUSR | stat.S_IWUSR)  # 设置文件只读和可写权限给用户

在 Python 中,你可以使用 os 模块来获取当前项目的路径,并结合 os.path 模块中的函数来获取当前项目路径下的子路径。以下是具体步骤和示例代码:

1. 获取当前脚本的绝对路径

首先,你需要获取当前运行脚本的绝对路径。

python深色版本

import os

# 获取当前脚本的绝对路径
script_path = os.path.abspath(__file__)
print("当前脚本的绝对路径:", script_path)

2. 获取当前项目的根目录

然后,你可以从脚本的路径中提取出项目的根目录。这取决于你的项目结构,如果你的脚本位于项目的根目录下,则可以直接使用脚本所在目录作为项目根目录。

python深色版本

# 获取当前脚本所在的目录
project_root = os.path.dirname(script_path)
print("项目根目录:", project_root)

如果你的脚本在一个子目录中,比如 src 目录下,那么你可以继续向上一级目录走。

python深色版本

# 如果脚本位于 src 目录下,获取上一级目录
project_root = os.path.dirname(os.path.dirname(script_path))
print("项目根目录:", project_root)

3. 获取子路径

一旦你有了项目的根目录,就可以通过 os.path.join() 函数来构建项目内的任何子路径。

python深色版本

# 构建子路径
sub_directory = os.path.join(project_root, 'data')
print("子目录路径:", sub_directory)

# 检查该子目录是否存在
if not os.path.exists(sub_directory):
    os.makedirs(sub_directory)  # 如果不存在则创建

# 获取子目录下的所有文件和目录
files_in_subdirectory = os.listdir(sub_directory)
print("子目录下的文件和目录:", files_in_subdirectory)

示例代码汇总

将上述代码汇总如下:

python深色版本

import os

# 获取当前脚本的绝对路径
script_path = os.path.abspath(__file__)
print("当前脚本的绝对路径:", script_path)

# 获取当前脚本所在的目录作为项目根目录
project_root = os.path.dirname(script_path)
print("项目根目录:", project_root)

# 如果脚本位于 src 目录下,获取上一级目录
# project_root = os.path.dirname(os.path.dirname(script_path))
# print("项目根目录:", project_root)

# 构建子路径
sub_directory = os.path.join(project_root, 'data')
print("子目录路径:", sub_directory)

# 检查该子目录是否存在
if not os.path.exists(sub_directory):
    os.makedirs(sub_directory)  # 如果不存在则创建

# 获取子目录下的所有文件和目录
files_in_subdirectory = os.listdir(sub_directory)
print("子目录下的文件和目录:", files_in_sub_directory)

这段代码会输出当前脚本的绝对路径、项目的根目录、子目录的路径以及子目录中存在的文件和目录。如果你的项目结构有所不同,可以根据实际情况调整获取项目根目录的方式。

标签:python,os,directory,path,print,基本操作,OS,目录
From: https://www.cnblogs.com/wakanda-forever/p/18395650

相关文章

  • 员工工作服穿戴AI识别 Python
    员工工作服穿戴AI识别系统是基于人工智能技术,员工工作服穿戴AI识别通过在工厂和电力场景内部安装摄像头,对员工的工作服穿戴情况进行实时监控。当员工的工作服穿戴不符合规范时,员工工作服穿戴AI识别将自动发出警报,及时通知现场管理人员进行处理。员工工作服穿戴AI识别24小时不间断运......
  • Hyper-V 安装 Centos
    Author:ACatSmilingSince:2024-09-02CentOS安装ISO镜像下载官方网站:https://www.centos.org/目前,最新版本为CentOSStream9:本文以CentOS7为例,下载页拉到下面,选择旧版本安装。OlderVersionsLegacyversionsofCentOSarenolongersupported.Forhistor......
  • Python多态
    #1多态#指同一种行为具有不同的表现形式#1.1多态的前提#继承#重写#classAnimal:#  defspeak(self):#    print('动物')#classDog(Animal):#  defspeak(self):#    print('狗')##classCat(Animal):#  defspeak(se......
  • 【Python学习笔记】第1章 问答环节
    人们为什么使用Python软件质量:可读性、可维护性开发者生产效率:代码更少程序的可移植性:同样的代码在不同的操作系统中都可以运行标准库的支持:内置可移植的功能模块组件构成:轻松地与应用程序的其他部分通信享受乐趣:略软件质量追求代码简洁,可读性模块化、面向......
  • Python参数传递的艺术:解锁编程灵活性的秘密武器
    引言参数传递作为函数调用过程中的关键环节,对程序逻辑有着重要影响。不同的参数传递方式能够帮助我们更好地组织代码,提高程序运行效率。比如,在处理大量数据或复杂业务逻辑时,合理的参数设计可以让我们的代码更简洁、更高效;而在进行单元测试或者接口调试时,灵活的参数机制又能极大地......
  • 函数的力量:掌握Python中的“返回值”艺术
    引言在实际开发过程中,函数的返回值扮演着极其重要的角色。它不仅能够简化代码结构,提高代码复用性,还能帮助我们构建更加灵活高效的程序架构。通过合理设计函数的返回值,可以轻松实现数据处理、状态传递等多种功能。接下来,让我们一起深入了解如何定义与使用Python函数中的返回值。基......
  • mybatis-plus批量增加、批量修改样例+建表语句+postman接口
    使用mybatis-plus开发中会遇到数据量多的情况下,插入和修改效率低,主要原因是“新增“和“修改”方法是对一条数据进行处理的,如果有一万条数据就会和数据库交互一万次所以效率就低。如何提高效率就需要批量操作,如下展示批量插入和批量修改的代码,数据库使用mysql。1、建表语句CREA......
  • 矩阵乘以向量 Python代码
    回顾矩阵与向量相乘设有一个矩阵A(2行3列),设有一个列向量(3个分量)不难发现,矩阵×列向量,就是把矩阵看做是n个行向量然后与被乘的向量进行点乘,点乘得到的数量,就构成了一个新的向量上面的计算过程如下:回顾:矩阵×列向量的必要前提并不是所有矩阵都可和任意列向量相乘,......
  • 【FreeRTOS】事件组的本质
    目录0前言1事件组讲解2事件组概念与操作2.1事件组的概念2.2事件组的操作3事件组函数3.1创建3.2删除3.3设置事件3.4等待事件3.5同步点4示例:广播5示例:等待任意一个事件6示例:等待多个事件都发生0前言学习视频:【FreeRTOS入门与工程实践--由浅......
  • python学习
    jieba.lcut()用于对中文分词,split是对字符串操作,使字符变为列表分割importjiebatext="欢迎来到通大"seg_list=jieba.cut(text,cut_all=False)print("精确模式:"+"/".join(seg_list))精确模式:欢迎/来到/通大jieba.posseg()进行词性标注importjie......