python 常见OS基本操作

翀翀翀 / 2024-09-04 / 原文

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)

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