Python基础-14.os和sys模块

TOC

一、Python-os模块

os 模块提供了非常丰富的方法用来处理文件和目录。
定义三个目录给下面的例子做参考,使用需要导入os模块

# 导入os模块
import os
path = '.'  
path1 = 'test/test'  
path2 = '/usr/local/test/'

1.os模块常用方法

获取当前工作路径:

# getcwd()获取当前工作路径
os.getcwd()
# 使用path的下面方法获取工作路径
os.path.dirname(os.path.realpath(__file__))

常用的方法:

# listdir() 返回该路径下的所有文件和目录
print(os.listdir(path))

# walk() 深层次遍历指定路径下的所有子文件夹,返回的是一个由路径、文件夹列表、文件列表组成的元组
for path, dirs, files in os.walk(path):
    print(path, dirs, files)
    print("\n")

# makedirs() 生成一个递归的文件夹
os.makedirs(path1)

# rmdir() 删除指定路径下的文件夹
os.rmdir(path1)

# remove() 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。
os.remove(path1)

# removedirs() 递归删除目录
os.removedirs(path1)

# rename(src, dst) 重命名文件或目录,从 src 到 dst
src = 'test'
dst = 'test1'
os.rename(src, dst)

# link() 创建硬连接,名为dst,指向参数 src
os.link(src, dst)

# system() 调用系统命令
os.system('date')

2.os模块path方法

path是os下的子方法,有着很多有用的方法。
path的常用方法:

# path.exists() 判断指定路径下的目录是否存在。存在返回True,否则返回False
print(os.path.exists(path1))

# path.isfile() 判断它是否是文件。是返回True,否则返回False
print(os.path.isfile(path1))

# path.isdir() 判断它是否是文件夹。是返回True,否则返回False
print(os.path.isdir(path1))

# path.join() 传入两个path路径,将该路径拼接起来,形成一个新的完整路径
new_path = os.path.join(path2, path1)
print(new_path)

# path.split() 传入一个完整的path路径,将其拆分为绝对路径和文件名2部分
print(os.path.split(new_path))

# path.splitext() 将一个文件路径分割成文件名和文件扩展名两个部分。它返回一个包含两个元素的元组,第一个元素是除去扩展名的文件名,第二个元素是文件扩展名。
os.path.splitext('test.png')[1]

# path.dirname() 传入一个完整的文件路径,只获取其目录的绝对路径
print(os.path.dirname(path1))

# path.basename() 传入一个完整的文件路径,只获取其文件名
print(os.path.basename(path1))

# path.relpath() 计算一个路径相对于另一个路径的相对位置。
print(os.path.relpath('/usr/local/test/main', '/usr/local/test'))

# path.getsize() 返回该文件的大小;
print(os.path.getsize(path1))

3.os模块system方法

Python中执行系统命令的一种方法,属于os模块提供的功能。它的作用相当于在终端或命令行中输入一条命令,然后执行这条命令。
 【示例】

import os
command = 'ls -l'  # 创建命令变量
os.system(command)  # 使用os.system执行命令
'''运行结果如下
total 56
drwxr-xr-x@ 2 devops  staff    64 Sep 25 16:39 __pycache__
-rw-r--r--@ 1 devops  staff   290 Jul 22 11:30 itchat-test.py
-rw-r--r--@ 1 devops  staff  3188 Jul 22 11:30 test.json
-rw-r--r--@ 1 devops  staff   157 Jul 22 11:30 test.log
-rwxr-xr-x@ 1 devops  staff    48 Sep 25 17:33 test.py
-rw-r--r--@ 1 devops  staff   207 Jul 22 11:30 test.txt
-rw-r--r--@ 1 devops  staff   206 Jul 22 11:30 测试追加内容.py
-rw-r--r--@ 1 devops  staff   991 Jul 22 11:30 爱心跳动.py
'''

注意:os.system()不能直接获取命令输出,只能获取命令状态,如果需要获取命令的输出建议使用os.poen()方法。

使用os.popen()方法获取命令执行结果,如下所示:

import os
data = os.poen('cat test.txt')

二、Python-sys模块

sys 模块是 Python 标准库中非常常用和重要的模块之一,它提供了与 Python 解释器交互的功能。
导入sys模块

import sys

1.sys常用方法

# sys.argv: 返回一个列表,包含了程序的命令行参数。第一个元素是程序本身的名称,之后的元素是传递给程序的参数。
print(sys.argv) # 所有参数列表
print(sys.argv[1]) # 第一个参数
print(len(sys.argv)) # 多少个参数
# sys.version: 返回当前 Python 解释器的版本信息。
print(sys.version)
# sys.platform: 返回当前运行 Python 程序的操作系统平台。
print(sys.platform)
# sys.exit(): 退出程序,可以随意传参,也可以不要参数
sys.exit(1)
# sys.stdin: 表示标准输入流,可以用于读取用户的输入。
# sys.stdout: 表示标准输出流,可以用于向控制台输出内容。
# sys.stderr: 表示标准错误流,可以用于向控制台输出错误信息。
sys.stderr.write("An error information!")