Python-笔记(模块)

Python-os模块

os 模块属性
linesep 用于在文件中分隔行的字符串
sep 用来分隔文件路径名的字符串
pathsep 用于分隔文件路径的字符串
curdir 当前工作目录的字符串名称
pardir (当前工作目录的)父目录字符串名称


os 模块的文件/目录访问函数
文件处理
mkfifo()/mknod() 创建命名管道/创建文件系统节点
remove()/unlink() 删除文件  
os.remove()函数用来删除一个文件。
rename()/renames() 重命名文件  
*stat() 返回文件信息(包含stat(), lstat(), xstat())
symlink() 创建符号链接
utime() 更新时间戳
tmpfile() 创建并打开('w+b')一个新的临时文件
walk() 生成一个目录树下的所有文件名

目录/文件夹
chdir()/fchdir() 改变当前工作目录/通过一个文件描述符改变当前工作目录
chroot() 改变当前进程的根目录
listdir() 列出指定目录的文件   返回指定目录下的所有文件和目录名。 os.listdir(dirname):列出dirname下的目录和文件
getcwd()/getcwdu() 返回当前工作目录/功能相同, 但返回一个 Unicode 对象  os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
mkdir()/makedirs() 创建目录/创建多层目录
rmdir()/removedirs() 删除目录/删除多层目录

访问/权限
access() 检验权限模式
chmod() 改变权限模式
chown()/lchown() 改变 owner 和 group ID/功能相同, 但不会跟踪链接
umask() 设置默认权限模式

文件描述符操作
open() 底层的操作系统 open (对于文件, 使用标准的内建 open() 函数)
read()/write() 根据文件描述符读取/写入数据
dup()/dup2() 复制文件描述符号/功能相同, 但是是复制到另一个文件描述符

设备号
makedev() 从 major 和 minor 设备号创建一个原始设备号
major()/minor() 从原始设备号获得 major/minor 设备号

os.path 模块中的路径名访问函数
分隔
basename() 去掉目录路径, 返回文件名
dirname() 去掉文件名, 返回目录路径
join() 将分离的各部分组合成一个路径名
split() 返回 (dirname(), basename()) 元组
splitdrive() 返回 (drivename, pathname) 元组
splitext() 返回 (filename, extension) 元组

信息
getatime() 返回最近访问时间
getctime() 返回文件创建时间
getmtime() 返回最近文件修改时间
getsize() 返回文件大小(以字节为单位)

查询
exists() 指定路径(文件或目录)是否存在
isabs() 指定路径是否为绝对路径
isdir() 指定路径是否存在且为一个目录
isfile() 指定路径是否存在且为一个文件
islink() 指定路径是否存在且为一个符号链接
ismount() 指定路径是否存在且为一个挂载点
samefile() 两个路径名是否指向同个文件


下面列举一些说明:
1. os.sep 可以取代操作系统特定的路径分割符。
2. os.name字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'。
3. os.getcwd()函数得到当前工作目录,即当前Python脚本工作的目录路径。
4. os.getenv()和os.putenv()函数分别用来读取和设置环境变量。
5. os.listdir()返回指定目录下的所有文件和目录名。
6. os.remove()函数用来删除一个文件。
7. os.system()函数用来运行shell命令。
8. os.linesep字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
9. os.path.split()函数返回一个路径的目录名和文件名。
10.  os.path.isfile()和os.path.isdir()函数分别检验给出的路径是一个文件还是目录。
11.  os.path.existe()函数用来检验给出的路径是否真地存在

os和os.path模块
os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回但前目录('.')
os.chdir(dirname):改变工作目录到dirname

os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false
os.path.isfile(name):判断name是不是一个文件,不存在name也返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):获得文件大小,如果name是目录返回0L
os.path.abspath(name):获得绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名与扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径



 Python os模块提供了一个统一的操作系统接口函数,通过python os模块可以实现对系统本身的命令,文件,目录进行操作,官方参考文档( http://docs.python.org/library/os)。


http://sfzhang88.blog.51cto.com/4995876/1224879


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'


本文出自 “~” 博客,谢绝转载!

你可能感兴趣的:(python,模块)