《Python内置模块004:os-操作系统交互、文件和目录操作》

os模块是Python的标准库模块之一,提供了一种与操作系统进行交互的便捷方式。以下是一些常用功能:

一、OS模块的常用方法

(1)文件和目录操作:

os.listdir(path):列出指定目录下的所有文件和目录。

os.mkdir(path):创建目录。

os.makedirs(path):递归地创建目录。

os.remove(path):删除文件。

os.rmdir(path):删除目录。

os.rename(src, dst):重命名文件或目录。

(2)路径操作:

os.path.join(path, *paths):将多个路径组合后返回。

os.path.exists(path):判断路径是否存在。

os.path.isfile(path):判断路径是否为文件。

os.path.isdir(path):判断路径是否为目录。

(3)执行系统命令:

os.system(command):在子终端中运行系统命令

(4)环境变量:

os.getenv(key, default=None):获取环境变量的值。

os.environ:获取所有环境变量。

(5)获取当前工作目录:

os.getcwd():返回当前工作目录。

os.chdir(path):改变当前工作目录。

(6)获取系统信息:

os.name:指示你正在使用的平台。

os.uname():获取当前操作系统的详细信息(仅Unix)

二、OS模块的 "文件和目录操作"

(1)文件和目录操作

import os

# 创建临时目录和文件
base_dir = './tmp/test_dir'
os.makedirs(base_dir, exist_ok=True)
file_path = os.path.join(base_dir, 'test_file.txt')

# 创建文件
with open(file_path, 'w') as f:
    f.write('This is a test file.')

# 列出指定目录下的所有文件和目录
files_and_dirs = os.listdir(base_dir)
print("目录下的文件和目录:", files_and_dirs)

# 创建一个新目录
new_dir = os.path.join(base_dir, 'new_folder')
os.mkdir(new_dir)
print("创建了新目录:", new_dir)

# 重命名目录
renamed_dir = os.path.join(base_dir, 'renamed_folder')
os.rename(new_dir, renamed_dir)
print("目录重命名为:", renamed_dir)

# 删除文件
os.remove(file_path)
print("已删除文件:", file_path)

# 删除目录
os.rmdir(renamed_dir)
print("已删除目录:", renamed_dir)

# 删除父目录
os.rmdir(base_dir)
print("已删除目录:", base_dir)

输出结果

目录下的文件和目录: ['test_file.txt']
创建了新目录: ./tmp/98822d75-1464-4667-9863-fab8df22b502/test_dir/new_folder
目录重命名为: ./tmp/98822d75-1464-4667-9863-fab8df22b502/test_dir/renamed_folder
已删除文件: ./tmp/98822d75-1464-4667-9863-fab8df22b502/test_dir/test_file.txt
已删除目录: ./tmp/98822d75-1464-4667-9863-fab8df22b502/test_dir/renamed_folder
已删除目录: ./tmp/98822d75-1464-4667-9863-fab8df22b502/test_dir

三、OS模块的 "路径操作"

(2)路径操作

import os

# 定义路径
base_path = './tmp'
file_path = os.path.join(base_path, 'example.txt')
dir_path = os.path.join(base_path, 'example_dir')

# 创建目录和文件
os.makedirs(dir_path, exist_ok=True)
with open(file_path, 'w') as f:
    f.write('Example content.')

# 路径组合
combined_path = os.path.join(base_path, 'subdir', 'file.txt')
print("组合路径:", combined_path)

# 判断路径是否存在
file_exists = os.path.exists(file_path)
print("文件路径是否存在:", file_exists)

dir_exists = os.path.exists(dir_path)
print("目录路径是否存在:", dir_exists)

# 判断是否为文件
is_file = os.path.isfile(file_path)
print("路径是否为文件:", is_file)

# 判断是否为目录
is_dir = os.path.isdir(dir_path)
print("路径是否为目录:", is_dir)

# 清理
os.remove(file_path)
os.rmdir(dir_path)

输出结果

组合路径: ./tmp/subdir/file.txt
文件路径是否存在: True
目录路径是否存在: True
路径是否为文件: True
路径是否为目录: True

四、使用案例(其它方法)

(3)执行系统命令

(4)环境变量

(5)获取当前工作目录

(6)获取系统信息

import os

# (3)执行系统命令
# 示例:列出当前目录内容(仅在支持的系统上运行)
command_output = os.system('ls')  # 在Windows系统上可以使用 'dir'
print("系统命令执行结果:", command_output)

# (4)环境变量
# 获取特定环境变量值
path_env = os.getenv('PATH')
print("PATH环境变量:", path_env)

# 获取所有环境变量
all_env_vars = os.environ
print("所有环境变量:", all_env_vars)

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

# 改变当前工作目录
new_directory = './tmp'
os.chdir(new_directory)
changed_directory = os.getcwd()
print("改变后的工作目录:", changed_directory)

# (6)获取系统信息
platform_name = os.name
print("操作系统平台名称:", platform_name)

# 获取当前操作系统的详细信息(仅Unix)
try:
    system_info = os.uname()
    print("操作系统详细信息:", system_info)
except AttributeError:
    print("os.uname() 仅在Unix系统上可用。")

输出结果

系统命令执行结果: -1
PATH环境变量: /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
所有环境变量: environ({'PATH': '/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', 'HOSTNAME': 'dev-6551a5-00-7d7857d58-l6c2t', 'KUBERNETES_SERVICE_PORT': '10285', 'KUBERNETES_PORT': 'tcp://10.212.238.41:10285', 'LOADBALANCER_SERVICE_PORT': '80', 'LOADBALANCER_PORT_80_TCP_ADDR': '10.212.166.155', 'KUBERNETES_SERVICE_HOST': '10.212.238.41', 'KUBERNETES_PORT_10285_TCP_PORT': '10285', 'LOADBALANCER_SERVICE_HOST': '10.212.166.155', 'KUBERNETES_SERVICE_PORT_HTTPS': '10285', 'KUBERNETES_PORT_10285_TCP_PROTO': 'tcp', 'LOADBALANCER_SERVICE_PORT_TEST': '80', 'LOADBALANCER_PORT_80_TCP_PROTO': 'tcp', 'KUBERNETES_PORT_10285_TCP': 'tcp://10.212.238.41:10285', 'KUBERNETES_PORT_10285_TCP_ADDR': '10.212.238.41', 'LOADBALANCER_PORT': 'tcp://10.212.166.155:80', 'LOADBALANCER_PORT_80_TCP': 'tcp://10.212.166.155:80', 'LOADBALANCER_PORT_80_TCP_PORT': '80', 'LANG': 'C.UTF-8', 'GPG_KEY': 'E3FF2839C048B25C084DEBE9B26995E310250568', 'PYTHON_VERSION': '3.8.17', 'PYTHON_PIP_VERSION': '23.0.1', 'PYTHON_SETUPTOOLS_VERSION': '57.5.0', 'PYTHON_GET_PIP_URL': 'https://github.com/pypa/get-pip/raw/0d8570dc44796f4369b652222cf176b3db6ac70e/public/get-pip.py', 'PYTHON_GET_PIP_SHA256': '96461deced5c2a487ddc65207ec5a9cffeca0d34e7af7ea1afc470ff0d746207', 'HOME': '/root', 'WERKZEUG_SERVER_FD': '4', 'LD_LIBRARY_PATH': '/usr/local/lib/python3.8/site-packages/cv2/../../lib64:', 'PYGAME_HIDE_SUPPORT_PROMPT': '1', 'KMP_DUPLICATE_LIB_OK': 'True', 'KMP_INIT_AT_FORK': 'FALSE'})
当前工作目录: 
改变后的工作目录: 
操作系统平台名称: posix
操作系统详细信息: posix.uname_result(sysname='Linux', nodename='dev-6551a5-00-7d7857d58-l6c2t', release='4.19.0-10-amd64', version='#1 SMP Debian 4.19.132-1 (2020-07-24)', machine='x86_64')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大大钢琴

喜欢!就请他吃3块钱好吃的吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值