Linux系统管理

Linux系统管理

一、OS模块常用功能

1、os模块打开文件

方法如下:

os.open(filename, flag, [,mode])

flag参数说明:

os.O_CREAT	# 创建文件
os.O_RDONLY	# 只读方式打开
os.O_WRONLY	# 只写方式打开
os.O_RDWR	# 读写方式打开
2、os模块对文件进行操作

常用方法如下:

# 读取文件
os.read(fd, buffersize)
# 写入文件
os.write(fd, string)
# 文件指针操作
os.lseek(fd, pos, how)
# 关闭文件
os.close(fd)

代码演示:

文件创建和写入

import os

# 打开文件
fd = os.open("abc.txt", os.O_RDWR | os.O_CREAT)

# 写入字符串
str = "Hello Python!"
ret = os.write(fd, bytes(str, 'UTF-8'))

# 输入返回值
print("写入的位数为: ")
print(ret)

print("写入成功")

# 关闭文件
os.close(fd)
print("关闭文件成功!!")

文件读取

import os

# 打开文件
fd = os.open("abc.txt", os.O_RDWR)

# 读取文本
ret = os.read(fd, 6)
print(ret)

# 关闭文件
os.close(fd)
print("关闭文件成功!!")
3、os模块管理文件和目录

常用方法如下:

os方法说明
remove(path)删除文件
rename(old, new)修改文件或者目录名
getcwd()获取当前目录
listdir(path)返回当前目录下所有文件组成的列表
mkdir(path [,mode])创建目录
makedirs(path [,mode])创建多级目录
rmdir(path)删除目录(目录必须为空目录)
removedirs(path)删除多级目录(目录必须为空目录)

代码演示:

# coding=utf-8

import os


print(os.getcwd())  # pwd
print(os.listdir()) # ls
os.rename('abc.txt','test.txt') # mv abc.txt test.txt
os.remove('read.py')    # rm -f abc.txt

os.mkdir('test')    # mkdir dir1
os.makedirs('demo/abc') # mkdir -p dir2/dir22
os.rmdir('test')    # 目录必须为空
os.removedirs('demo')   #目录必须为空
4、os模块管理文件权限
os方法说明
access(path, mode)判断该文件权限:F_OK存在;
权限:R_OK,W_OK,X_OK
chmod(path, mode)修改文件权限:0o755
chown(path, uid, gid)更改文件所有者,如果不修改可以设置为 -1

代码演示:

import os


# 测试路径是否存在:os.F_OK
res = os.access('test.txt',os.F_OK)
print(res)

# 测试当前用户对该文件是否有读的权限
res = os.access('test.txt',os.R_OK)
print(res)

# 测试当前用户对该文件是否有写的权限
res = os.access('test.txt',os.W_OK)
print(res)

# 测试当前用户对该文件是否有执行的权限
res = os.access('test.txt',os.X_OK)
print(res)

# 更改当前用户的权限
os.chmod('test.txt',0o755)

# 更改文件的所有者
os.chown('test.txt', 1001, 1002)  
5、os.path模块管理文件与路径
(1)拆分路径
os.path方法说明
split返回一个二元组,包含文件的路径和文件名
dirname返回文件的路径
basename返回文件名
splitext返回一个去掉文件扩展名的部分和扩展名的二元组

代码演示:

In [10]: os.getcwd()
Out[10]: '/opt/os_demo'

In [11]: os.listdir()
Out[11]: ['os_access.py', 'test.txt']

In [12]: path = '/opt/os_demo/test.txt'
    
In [13]: os.path.split(path)
Out[13]: ('/opt/os_demo', 'test.txt')

In [14]: os.path.dirname(path)
Out[14]: '/opt/os_demo'

In [15]: os.path.basename(path)
Out[15]: 'test.txt'

In [16]: os.path.splitext(path) 
Out[16]: ('/opt/os_demo/test', '.txt')
(2)构建路径
os.path方法说明
expanduser展开用户的HOME目录,如oracle
abspath得到文件或路径的绝对路径
join根据不同的操作系统平台,使用不同的路径分隔符拼接路径
isabs检查一个路径是不是一个绝对路径

代码演示:

In [19]: os.path.expanduser('~') 
Out[19]: '/root'

In [20]: os.path.expanduser('~oracle') 
Out[20]: '/home/oracle'

In [21]: os.path.expanduser('~accp')
Out[21]: '/home/accp'

In [22]: os.path.expanduser('~acp') 
Out[22]: '~acp'

In [23]: os.path.abspath('.')
Out[23]: '/opt/os_demo'

In [24]: os.path.abspath('..')
Out[24]: '/opt'

In [25]: os.path.join('/opt/os_demo','test.txt')
Out[25]: '/opt/os_demo/test.txt'

In [26]: os.path.isabs('/opt/os_demo/') 
Out[26]: True

In [27]: os.path.isabs('.') 
Out[27]: False
(3)获取文件属性
os.path方法说明

代码演示:

In [33]: os.path.getatime(path)
Out[33]: 1587547270.7306058

In [34]: os.path.getmtime(path)
Out[34]: 1587547270.7306058

In [35]: os.path.getctime(path)
Out[35]: 1587548055.4721448

In [36]: os.path.getsize(path)
Out[36]: 0
(4)判断文件类型
os.path方法说明
os.path.isfile(path)判断路径是否为文件
os.path.isdir(path)判断路径是否为目录
os.path.islink(path)判断路径是否为链接
os.path.ismount(path)判断路径是否为挂载点

代码演示:

In [37]: os.path.isfile(path)
Out[37]: True

In [38]: os.path.isdir(path)
Out[38]: False

In [39]: os.path.islink(path)
Out[39]: False

In [40]: os.path.ismount(path)
Out[40]: False
6、os模块执行shell命令

os.system()的作用:

执行shell命令
返回shell命令的返回值
命令的输出会输出到标准输出

代码演示:

os.system(‘cls’)

编写自动安装Python的脚本

实现步骤:

下载Python版本源码
安装Python需要的依赖库
编译安装Python

伪代码:

1. 判断用户是不是root
2. 如果是,等待用户输入Python版本
3. 执行shell命令下载源码包
4. 安装依赖开发包
5. 编译安装Python

脚本内容如下(基于Python2):

auto_install_python.py

# coding=utf-8
import os

# 判断用户是否是root用户
if os.getuid() == 0:
    pass
else:
    print
    '当前用户不是root用户!'
    SystemExit(1)

# 安装Python依赖库
cmd_module = 'yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel'
res = os.system(cmd_module)
if res != 0:
    print
    'Python依赖库安装失败,请重新执行该脚本。'
    SystemExit(1)
else:
    print
    'python依赖库安装成功!'

# 输入Python版本,下载Python源码包到本地目录
# wget url
version = raw_input('请输入Python版本:(3.6/3.8)')
if version == '3.6':
    url = 'https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz'
else:
    url = 'https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz'
cmd = 'wget ' + url
res = os.system(cmd)
if res != 0:
    print 'Python源码包下载失败!'
    SystemExit(1)
else:
    print('======================>>>Python源码包下载成功!')

# 解压Python源码包
# tar zxvf Python-3.6.10.tgz
if version == '3.6':
    package_name = 'Python-3.6.10'
else:
    package_name = 'Python-3.8.1'
res = os.system('tar zxvf ' + package_name + '.tgz')
if res != 0:
    print '解压失败。。。'
    SystemExit(1)
else:
    print('#########################解压成功!#########################')

# 配置语言
os.system('export LANG=zh_CN.UTF-8')
os.system('export LANGUAGE=zh_CN.UTF-8')

# 切换到Python目录
os.chdir(package_name)
os.system('./configure --prefix=/usr/local/python3')
res = os.system('make && make install')
if res !=0:
    print '源码编译失败。。。'
    SystemExit(1)
else:
    print('####################Python安装成功,请进行验证!####################')

# 修改用户环境变量
os.system('echo "export PYTHON3=/usr/local/python3" >>~/.bash_profile')
os.system('echo "export PATH=$PYTHON3/bin:$PATH" >>~/.bash_profile')
os.system("source ~/.bash_profile")
os.system('cat ~/.bash_profile')
print('####################用户环境变量已修改,请进行验证!####################')
os.system('python3 --version')
7、os.walk遍历目录树

二、使用ConfigParser类解析ini配置文件

实现查询、添加、删除、保存。

练习目的:

掌握文件基本操作
认识ini文件
了解ConfigParser类

使用ConfigParser类解析配置文件

ini配置文件的格式:

节:				[session]
参数(键=值)			name=value
解析mysql配置文件

my.ini文件示例:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值