python系统编程模块_Python基础:系统编程_sys、os模块

sys

import sys

查看模块下有哪些功能

print(dir(sys)) # 打印sys模块下所有的成员、功能

from pprint import pprint

print(pprint(dir(sys))) # 用这个pprint模块打印效果是一行一个 更美观一些

平台与版本

print(sys.platform)

# 获取当前系统环境:win32 64位系统打印的结果也是win32,Python只有32位的

print(sys.version) # 当前使用的Python版本:

# 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)]

print(sys.path) # 获取python环境变量

print(sys.modules) # 当前已经载入的模块

观察异常细节

1、通过之前的方式:手动抛出异常

try:

raise KeyError # 手动抛出一个异常

except: # 如果捕获到任何异常

print('有错误发生!') # 就打印一个消息

try:

raise KeyError('错误的键值!') # 手动抛出一个异常并明确一下异常

except KeyError as e: # 如果捕获到这个异常,就把它放到一个变量e里

print(e) # 再打印这个异常

2、使用sys结合traceback

import traceback

try:

raise KeyError # 手动抛出一个异常

except: # 如果捕获到任何异常

print(sys.exc_info()) # 打印捕获到最近一次发生的异常 .exc_info()可以查看到细节,返回元祖

# (, KeyError(), )

# 类型 消息(这里没有加错误内容所以是空的) 回溯对象

traceback.print_tb(sys.exc_info()[2]) # 打印捕获到异常的第三个元素的细节:回溯对象

# 这种方式可以快速的定位到异常错误的位置

命令行参数

sys.argv:在命令行下查看和使用命令行参数

在Windows控制台下调用python脚本程序的时候能看到效果

import sys

def add():

a = 5

b = 3

return a + b

print(add())

print(sys.argv) # 在命令行打印命令行的参数,返回列表

# 在命令行执行脚本文件的时候输入:python d:\文件路径.py 那么它打印的就是文件路径:[d:\文件路径.py]

# 输入:python d:\文件路径.py a b 1 2 那么它打印的就是文件路径:[d:\文件路径.py,a,b,1,2]

print(sys.argv[0]) # 在命令行打印第一个参数 d:\文件路径.py

print(sys.argv[1]) # 在命令行打印第二个参数 a

案例

demo.py

def add(a, b):

return a + b

a = 0 # 默认值 防止用户没有输入

b = 0 # 默认值 防止用户没有输入

if sys.argv[1]: # 如果输入了第二个参数

a = int(sys.argv[1])

if sys.argv[2]: # 如果输入了第三个参数

b = int(sys.argv[2])

print(add(a, b)) # 执行函数并打印结果

# 在控制台输入:python D:\demo.py 5 6 打印出结果11

模块应用:标准流

sys.stdin 标准输入流 默认等同于 input()

sys.stdout 标准输出流 默认等同于 print()

sys.stderr 标准错误流

import sys

# 输入流

print('hello') # 打印一行字

sys.stdout.write('hello') # 用sys下的方法打印

print('======================================================')

# 输出流

input('请输入信息:')

print('请输入信息:', end='');sys.stdin.readline()[:] # 用sys下的方法

print('请输入信息:', end='');x = sys.stdin.readline()[:]

# 用sys下的方法,把结果赋值给x 等同于x = input('请输入信息:')

print(x)

# 错误流

sys.stderr.write('错误消息')

sys.stderr.flush()

os

import os

# shell 变量

print(os.environ) # 获取python环境变量

# 管理工具

print(os.getcwd()) # 当前工作目录

print(os.listdir()) # 观察当前工作目录下的内容

print(os.listdir(r'f:')) # 观察F盘根目录下的内容

os.chdir('mulu1') # 切换目录

print(os.getcwd()) # 当前工作目录

print(os.getpid()) # 当前python进程id

print(os.getppid()) # 当前python进程的父进程id

运行shell命令

Windows下叫命令提示符,Linux下叫shell命令,mac下叫终端

import os

.system():Python脚本中运行shell命令

只运行命令 用.system()

os.chdir(r'f:') # 切换到f盘

print(os.getcwd()) # 查看当前目录

print(os.system('dir')) # 查看目录下的内容(执行Windows的dos命令:dir)

print(os.system('dir /b')) # 以换行方式显示

# dir /b:列出当前目录下的内容 带/b打印效果是一行一个

print(os.system('type python.txt')) # 查看python.txt这个文件的内容

.popen():Python脚本中运行shell命令并连接输入输出流 返回文件对象

如果想要得到结果 用.popen()

print(os.popen('dir /b')) # dir:查看目录下的内容 返回文件对象

txt = os.popen('dir /b').read() # 通过.read()得到所有内容 赋值给txt

print(txt) # 打印结果

print(os.popen('type python.txt')) # 查看文件里的内容

txt2 = os.popen('type python.txt').readlines()

print(txt2)

文件处理

可结合管理工具做一系列操作

os.getcwd() # 查看当前工作目录

os.chdir('demo9\\mulu1') # 切换到mulu1目录

os.getcwd() # 查看当前工作目录

os.mkdir('test') # 创建一个目录

os.listdir() # 查看当前工作目录下的内容

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

os.getcwd() # 查看当前工作目录

os.listdir() # 查看当前工作目录下的内容

open('info.txt', 'w', encoding='utf8').write('Hello') # 在当前工作目录创建一个Hello文件 open方式

os.listdir() # 查看当前工作目录下的内容

os.rename('info.txt', 'data.txt') # 改名

os.listdir() # 查看当前工作目录下的内容

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

os.chdir('..') # 切换到..目录:返回上一级目录

os.getcwd() # 查看当前工作目录

os.rmdir('test') # 删除目录

可移植工具

print(os.sep) # 在当前win系统下是:\\ 分隔符

print(os.pathsep) # 在当前win系统下是:; 路径分隔符

print(os.curdir) # 在当前win系统下是:. 相对当前目录符号

print(os.pardir) # 在当前win系统下是:.. 相对上级目录符号(父目录符合)

路径模块:.path子模块

os.path.isdir(r'd:\Baofeng') # 判断某一个内容是不是一个目录

os.path.isdir(r'd\123.xtx') # 判断某一个内容是不是一个目录

os.path.isfile(r'd:\123.xtx') # 判断某一个内容是不是一个文件

os.path.exists(r'd:\123.txt') # 判断某个文件是否存在

os.path.exists(r'd:\Baofeng') # 判断某个目录是否存在

os.path.getsize(r'f:\python.txt') # 查看文件大小 单位:字节

name = r'C:\123\456\789.txt'

print(os.path.split(name)) # 拆分路径:切割文件路径,返回一个元祖(C:\123\456, 789.txt)

print(os.path.dirname(name)) # 获取目录名称,C:\\123\\456

print(os.path.basename(name)) # 获取文件名称,789.txt

# .splitext(path) 拆分路径扩展名

print(os.path.splitext(name)) # 切割文件的扩展名 (C:\\123\\456,\\789, .txt)

print(os.path.splitext(name)[1]) # 获取文件的扩展名 .txt

# .join() 连接路径

print(os.path.join(r'C:\temp', 'product.csv')) # 连接目录名称和文件名称

该怎么切割 怎么连接的,这些都是根据 可移植工具来判断

# 字符串str的.split()切割方法

os.path.split(name) # 使用path的.split()切割方法

print(name.split(os.sep)) # 使用字符串的切割方法,指定以操作系统的分隔符来切割

.normpath():标准化路径

p = 'D:\\app\\db/files/data.csv'

print(os.path.normpath(p)) # 把一个不规范路径,标准化为一个标准的、符合当前操作系统的路径

.abspath():绝对化路径

print(os.getcwd()) # 查看当前工作目录

os.chdir('mulu1') # 进入到mulu1目录

print(os.getcwd()) # 查看当前工作目录

print(os.path.abspath('..')) # 不切换 只是查看当前目录的上级目录

print(os.path.abspath('.')) # 不切换 只是查看当前目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值