Python os模块提供了一个统一的操作系统接口函数,通过python os模块可以实现对系统本身的命令,文件,目录进行操作,官方参考文档( http://docs.python.org/library/os)。
1)os.sep 可以取代操作系统特定的路径分割符(在Linux、Unix下它是'/',在Windows下它是'\\',而在Mac OS下它是':')。
1
2
3
4
5
|
os.sep
'/ ’ #在Linux返回的是'
/
'
mysqldir
=
os.sep
+
'data'
+
os.sep
+
'mysql'
+
os.sep
+
'3306'
#定义mysql数据存放目录
mysqldir
'/data/mysql/3306'
|
2)返回path绝对路径。
1
2
|
os.path.abspath(
'iplist.txt'
)
'/root/sh/py/iplist.txt'
|
3)将path分割成目录和文件名二元组返回。
1
2
3
|
mysqldir
=
'/data/mysql/3306/mysql.sock'
os.path.split(mysqldir)
(
'/data/mysql/3306'
,
'mysql.sock'
)
|
4)返回path的目录,其实就是os.path.split(mysqldir)第一个元素。
1
2
|
os.path.dirname(mysqldir)
'/data/mysql/3306'
|
5)返回path最后文件名,即os.path.split(mysqldir)第二个元素。
1
2
|
os.path.basename(mysqldir)
'mysql.sock'
|
6)如果path存在,返回True,如果path不存在,返回False。
1
2
3
4
|
os.path.exists(mysqldir)
True
os.path.exists(
'/data/mysql/3308/mysql.sock'
)
False
|
7)如果path是绝对路径,返回True,否则返回False。
1
2
3
4
|
os.path.isabs(mysqldir)
True
os.path.isabs(
'sfzhang.txt'
)
False
|
8)如果path是一个存在的文件,返回True,否则返回False。
1
2
3
4
|
os.path.isfile(
'/root/sh/iplist.txt'
)
True
os.path.isfile(
'/root/sh/'
)
False
|
9)如果path是一个存在的目录,返回True,否则返回False。
1
2
3
4
|
os.path.isdir(
'/root/sh'
)
True
os.path.isdir(
'/root/sh/sh'
)
False
|
10)返回指定目录下的所有文件和目录名。
1
2
|
os.listdir(
'/root/sh/py'
)
[
'send_email.py'
,
'1.py'
,
'mymodule.pyc'
,
'mail.py'
,
'geturl.py'
,
'using_name.py'
]
|
11)连接目录与文件名
1
2
|
os.path.join(
'/data/mysql/3306'
,
'mysql.sock'
)
'/data/mysql/3306/mysql.sock'
|
12)创建一个目录Create a directory。
1
2
3
4
5
6
|
os.mkdir(
'py'
)
#创建单个目录
os.path.isdir(
'py'
)
#判断是否创建成功
True
os.makedirs(
'aa/bb/cc'
)
#创建多级目录
os.path.isdir(
'aa/bb/cc'
)
#判断是否创建成功
True
|
13)删除目录。
1
2
|
os.rmdir(
'py'
)
#删除单个目录
os.removedirs(
'aa/bb/cc'
)
#删除多级目录
|
14)删除文件。
1
|
os.remove(
'sfzhang.txt'
)
|
15)切换目录 Change the current working directory to the specified path.
1
2
3
|
os.chdir(
'/usr/local'
)
os.path.abspath(
'.'
)
#查看是否切换成功
'/usr/local'
|
16)使用的操作系统的平台,比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
1
2
|
os.name
'posix'
|
17)返回当前Python脚本工作的目录路径。
1
2
|
os.getcwd()
'/root/sh/py'
|
18)运行Linu型系统命令。
1
2
3
4
5
6
|
os.system(
'df -h'
)
文件系统 容量 已用 可用 已用
%
挂载点
/
dev
/
sda2
9.7G
8.9G
335M
97
%
/
/
dev
/
sda5
28G
12G
16G
44
%
/
data
/
dev
/
sda1
99M
18M
76M
19
%
/
boot
tmpfs
249M
0
249M
0
%
/
dev
/
shm
|
19)返回当前系统的登陆用户。
1
2
|
os.getlogin()
'root'
|
20)目录遍历,该函数返回一个元组,该元组有3个元素,分别表示每次遍历的路径名,目录列表和文件列表。
1
2
3
4
5
|
for
i
in
os.walk(
'/tmp/test'
):
...
print
i
...
(
'/tmp/test'
, [
'jpg'
], [
'file3'
,
'file1'
,
'file2'
])
(
'/tmp/test/jpg'
, [], [
'3.jpg'
,
'2.jpg'
,
'1.jpg'
])
|
上面是我总结的OS模块中常用的方法,利用这些方法可以编写简单的python脚本,在利用Linux计划任务可以完成自动化管理系统的目的。下面是参照python简明教程上面的一个脚本修改而来的备份目录或者文件的脚本。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#!/usr/local/bin/python
#sfzhang 20130619
import
os
import
time
#导入os和time模块
file
=
[
'/root/.ssh'
,
'/tmp'
]
#备份目录或者文件以list的形式指定
backup_dir
=
'/mnt/backup/'
#备份文件存放目录
date
=
time.strftime(
'%Y%m%d'
)
#备份文件时间戳(年月日)
target
=
backup_dir
+
'backfile'
+
date
+
'.tar.gz'
#备份文件完成路径和文件名
if
os.getlogin() !
=
'root'
:
#非root用户不能执行该脚本,
print
'Must root to run this python script!'
exit ()
if
not
os.path.exists(backup_dir):
#判断备份目录是否存在,如果不存在,则创建
os.mkdir(backup_dir)
print
'Successfully created directory'
,backup_dir
tar_command
=
"tar -czvf '%s' %s"
%
(target,
' '
.join(
file
))
#采用tar形式备份
if
os.system(tar_command)
=
=
0
:
#备份成功或失败提示信息
print
'Successful backup to'
,target
else
:
print
'Backup FAILED'
|