1.1 操作文件和目录
>>> import os
>>> os.name #操作系统类型
‘posix‘
>>> os.uname() #详细的系统信息
posix.uname_result(sysname=‘Linux‘,nodename=‘daidai.com‘, release=‘2.6.18-194.el5‘, version=‘#1 SMP Tue Mar 1621:52:39 EDT 2010‘, machine=‘x86_64‘)
>>> os.environ #当前环境变量
environ({‘OLDPWD‘: ‘/root‘, ‘PATH‘:‘/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin‘,‘LESSOPEN‘: ‘|/usr/bin/lesspipe.sh %s‘, ‘SSH_ASKPASS‘:‘/usr/libexec/openssh/gnome-ssh-askpass‘, ‘KDE_IS_PRELINKED‘: ‘1‘, ‘SSH_TTY‘:‘/dev/pts/1‘, ‘LS_COLORS‘:‘no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*NaNd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:‘,‘SHLVL‘: ‘1‘, ‘HOSTNAME‘: ‘daidai.com‘, ‘QTDIR‘: ‘/usr/lib64/qt-3.3‘, ‘TERM‘:‘vt100‘, ‘HOME‘: ‘/root‘, ‘KDEDIR‘: ‘/usr‘, ‘LOGNAME‘: ‘root‘, ‘_‘:‘/usr/bin/python‘, ‘SSH_CLIENT‘: ‘192.168.20.1 10042 22‘, ‘SHELL‘: ‘/bin/bash‘,‘HISTSIZE‘: ‘1000‘, ‘PWD‘: ‘/root/python‘, ‘KDE_NO_IPV6‘: ‘1‘, ‘CVS_RSH‘:‘ssh‘, ‘QTINC‘: ‘/usr/lib64/qt-3.3/include‘, ‘QTLIB‘: ‘/usr/lib64/qt-3.3/lib‘,‘INPUTRC‘: ‘/etc/inputrc‘, ‘LANG‘: ‘en_US.UTF-8‘, ‘SSH_CONNECTION‘:‘192.168.20.1 10042 192.168.20.101 22‘, ‘MAIL‘: ‘/var/spool/mail/root‘,‘G_BROKEN_FILENAMES‘: ‘1‘, ‘USER‘: ‘root‘})
>>> os.environ.get(‘PATH‘) #某个环境变量
‘/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin‘
1.1.1 目录操作
>>> import os
>>> os.path.abspath(‘.‘) #显示当前目录绝对路径
‘/root/python‘
>>> os.path.join(os.path.abspath(‘.‘),‘testdir‘) #连接两个目录,并不会生成该目录,除非定向输出文件
‘/root/python/testdir‘
>>> os.mkdir(os.path.join(os.path.abspath(‘.‘),‘testdir‘)) #创建目录
>>> os.rmdir(os.path.join(os.path.abspath(‘.‘),‘testdir‘)) #删除目录
>>> os.system(‘ls-l‘) #执行操作系统命令
total 84
-rw-r--r-- 1 root root 174 Jul 3 20:12 age.py
-rw-r--r-- 1 root root 152 Jul 13 14:12 assert.py
-rw-r--r-- 1 root root 181 Jul 3 20:25 birth.py
-rw-r--r-- 1 root root 19 Jul 1 14:03 calc.py
-rw-r--r-- 1 root root 244 Jul 13 10:56 err_logging.py
-rw-r--r-- 1 root root 115 Jul 13 15:03 err_log_level.py
-rw-r--r-- 1 root root 205 Jul 13 20:33 err.py
-rw-r--r-- 1 root root 143 Jul 3 20:36 for.py
-rw-r--r-- 1 root root 333 Jul 8 21:20 hello_module.py
>>> os.path.split(os.path.join(os.path.abspath(‘.‘),‘age.py‘))
(‘/root/python‘, ‘age.py‘)
os.path.split()函数,把一个路径拆分为两部分,后一部分总是最后级别的目录或文件名
>>> os.path.splitext(os.path.join(os.path.abspath(‘.‘),‘age.py‘))
(‘/root/python/age‘, ‘.py‘)
os.path.splitext()可以直接让你得到文件扩展名
这些合并、拆分路径的函数并不要求目录和文件要真实存在,它们只对字符串进行操作。
1.1.2 文件操作
>>> import os
>>> os.rename(‘test.txt‘,‘test.py‘) #重命名文件
>>> os.remove(‘test.py‘) #删除文件
列出当前目录下所有目录
>>> [x forx in os.listdir(‘.‘) if os.path.isdir(x)] #不含子目录
[‘Desktop‘, ‘.gconf‘, ‘.redhat‘,‘.gnome2_private‘, ‘Python-3.5.0b4‘, ‘redis‘, ‘python‘, ‘.chewing‘, ‘.Trash‘,‘.gnome‘, ‘.nautilus‘, ‘.kde‘, ‘.scim‘, ‘.gconfd‘, ‘.gnome2‘, ‘.metacity‘,‘.gstreamer-0.10‘, ‘.eggcups‘, ‘shell‘]
列出当前目录以.py结尾的文件
>>> [x forx in os.listdir(‘.‘) if os.path.isfile(x) and os.path.splitext(x)[1] == ‘.py‘]
[‘err_log_level.py‘, ‘my_abs.py‘, ‘age.py‘,‘中文测试.py‘, ‘birth.py‘, ‘mydict_test.py‘, ‘x.py‘, ‘mult_line.py‘,‘listpop.py‘, ‘calc.py‘, ‘hello.py‘, ‘assert.py‘, ‘for.py‘, ‘sum100.py‘,‘err_logging.py‘, ‘mydict.py‘, ‘err.py‘, ‘hello_module.py‘, ‘move.py‘]