【python】【内置模块】【一】【getpass os】
1. getpass
变量/函数名 | 含义 | 样例 |
getuser() | 获取系统用户名 |
>>> print getpass.getuser() |
getpass() | 提示用户输入密码 |
>>> pwd = getpass.getpass("please input password:")
123
>>> print pwd
123
|
2. os
这个模块提供了一种方便的使用操作系统函数的方法
变量/函数名 | 含义 | 样例 |
altsep | 根目录 | / |
curdir | 当前路径 | . |
pardir | 父路径 | .. |
sep | 路径分隔符 | / |
extsep | 文件扩展名分隔符 | . |
pathsep | 数组切片分隔符 | : |
linesep | 行结束符 |
>>> print map(str, os.linesep)
['\r', '\n']
|
defpath |
>>> print os.defpath
.;C:\bin
|
|
name | 使用的平台 |
>>> print os.name
nt
|
path | 见os.path | |
devnull | 空设备文件路径 | /dev/null |
SEEK_SET | 设置文件位置宏 | 0 |
SEEK_CUR | 设置文件位置宏 | 1 |
SEEK_END | 设置文件位置宏 | 2 |
F_OK | 文件是否存在 | 0 |
O_APPEND | 文件以添加方式打开 | |
O_CREAT | 如果文件不存在,则创建文件 | |
O_EXCL | 如果文件存在,并且指定了os.O_CREAT,则在指定该选项的情况下os.open调用会抛出OSError异常 | |
O_NOINHERIT | 阻止创建一个共享的文件描述符 | |
O_RANDOM | 缓存优化,但不限制从磁盘中随机存取 | |
O_RDONLY | 文件以只读方式打开 | |
O_RDWR | 文件以读写方式打开 | |
O_SEQUENTIAL | 缓存优化,但不限制从磁盘中序列存 | |
O_SHORT_LIVED | ||
O_TEMPORARY | ||
O_TEXT | ||
O_TRUNC | 文件大小截断为0 | |
O_WRONLY | 文件以只写方式打开 | |
P_DETACH | ||
P_NOWAIT | ||
P_NOWAITO | ||
P_OVERLAY | ||
P_WAIT | ||
R_OK | 文件是否可读 | 4 |
TMP_MAX | ||
W_OK | ||
X_OK | ||
abort() | 产生一个SIGABRT标识到当前的进程 | |
access() | 文件是否存在、可读写执行 |
>>> print os.access('test.txt', os.F_OK|os.R_OK|os.W_OK|os.X_OK)
true
|
chdir() | 改变当前的工作目录 |
>>> os.chdir('/Users/')
>>> os.getcwd()
'/Users'
|
chmod() | 修改文件权限 |
>>> os.chmod('test.txt', stat.S_IRUSR)
>>> os.system('ls -al test.txt')
-r-------- 1 ******* staff 1338 Oct 14 16:25 test.txt
0
|
close() | 关闭文件句柄 |
>>> fd = os.open('test.txt', os.O_RDONLY)
>>> os.close(fd)
|
closerange() | 关闭指定范围的文件句柄[low,high) |
>>> fd = os.open('test.txt', os.O_RDONLY)
>>> os.closerange(fd,fd+1)
|
dup() | 复制文件描述符 |
>>> fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT )
>>> fd2 = os.dup(fd)
>>> os.write(fd2, 'this is test.')
>>> os.closerange(fd, fd2+1)
|
dup2() | 复制文件描述符 |
>>> fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT )
>>> fd2 = fd+1
>>> os.dup2(fd, fd2)
>>> os.write(fd2, 'this is test.')
>>> os.closerange(fd, fd2+1)
|
environ() | ||
error() | ||
execv(path,args) |
这些函数都执行一个新的程序,然后用新的程序替换当前子进程的进程空间,而该子进程从新程序的main函数开始执行。在Unix下,该新程序的进程id是原来被替换的子进程的进程id。在原来子进程中打开的所有描述符默认都是可用的,不会被关闭。 execv*系列的函数表示其接受的参数是以一个list或者是一个tuple表示的参数表。execl*系列的函数表示其接受的参数是一个个独立的参数传递进去的。 exec*p*系列函数表示在执行参数传递过去的命令时使用PATH环境变量来查找命令。 exec*e系列函数表示在执行命令的时候读取该参数指定的环境变量作为默认的环境配置,最后的env参数必须是一个mapping对象,可以是一个dict类型的对象。
|
|
fdopen() | 通过文件描述符返回文件对象 |
>>> fd = os.open('test.txt', os.O_WRONLY)
>>> fd2 = os.fdopen(fd, 'w')
>>> fd2.write('this is test')
>>> fd2.close()
|
fstat() | 通过文件描述符获取文件信息 |
>>> fd = os.open('test.txt', os.O_WRONLY) >>> os.fstat(fd) posix.stat_result(st_mode=33188, st_ino=8327356, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=1416, st_atime=1520073503, st_mtime=1520073471, st_ctime=1520073471) |
fsync() | 强制将内容写入文件,刷新缓存 |
>>> fd = os.open('test.txt', os.O_WRONLY) >>> os.write(fd, 'this is test') >>> os.fsync(fd) |
getcwd() | 获得当前工作目录 |
>>> os.chdir('/Users/')
>>> os.getcwd()
'/Users'
|
getcwdu() | 获得当前工作目录,返回unicode编码 |
>>> os.chdir('/Users/')
>>> os.getcwdu()
u'/Users'
|
getpid() | 获得当前进程ID |
>>> os.getpid()
23408
|
isatty() | 判断如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。 |
>>> fd = os.open('test.txt', os.O_WRONLY)
>>> os.isatty(fd)
False
|
kill() | 给进程发送信号 |
>>> import signal
>>> os.kill(os.getpid(), signal.SIGTERM)
|
listdir() | 列出当前目录 |
>>> os.listdir('/Users/')
['.AllUsers', '.localized', 'Shared', 'xxxxxx']
|
lseek() | 设置文件描述符fd当前位置 |
>>> fd = os.open('test.txt', os.O_WRONLY)
>>> os.lseek(fd, 100, os.SEEK_SET)
|
lstat() | 显示文件状态,如果是软链接则不进行跟进 |
>>> os.system('ls -al b c')
-rw-r--r-- 1 ****** staff 1416 Mar 3 18:37 b
lrwxr-xr-x 1 ****** staff 1 Mar 4 14:18 c -> b
0
>>> os.lstat('c')
posix.stat_result(st_mode=41453, st_ino=9327498, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=1, st_atime=1520144309, st_mtime=1520144309, st_ctime=1520144309)
>>> os.stat('c')
posix.stat_result(st_mode=33188, st_ino=8327356, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=1416, st_atime=1520073503, st_mtime=1520073471, st_ctime=1520073471)
|
mkdir() | 创建文件夹 |
>>> os.mkdir('d')
>>> os.system('ls -l -d d')
drwxr-xr-x 2 ****** staff 68 Mar 4 14:23 d
0
|
open() | 打开文件 |
>>> fd = os.open('test.txt', os.O_WRONLY)
|
pipe() | 创建一个管道 |
>>> r, w = os.pipe()
|
popen() | 用于从一个命令打开一个管道,支持读或写 |
>>> fd = os.popen('echo this is sample.', 'r')
>>> fd.read()
'this is sample.\n'
|
popen2() | 用于从一个命令打开管道,可以同时支持读和写 | |
popen3() | 用于从一个命令打开管道,可以同时支stdin、stdout、stderr | |
popen4() | 用于从一个命令打开管道,可以同时支stdin、stdout_stderr | |
putenv() | 增加环境变量,putenv()不会直接改变os.environ,所以最好是修改os.environ |
>>> os.putenv('xxxxxxxx', 'b')
>>> os.environ['xxxxxxxx']
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: 'xxxxxxxx'
|
read() | 读数据 |
>>> fd = os.open('test.txt', os.O_RDONLY)
>>> os.read(fd, 100)
'this is test.txt\n'
|
remove() | 删除文件 |
>>> os.remove('test.txt')
>>> os.system('ls -al test.txt')
256
ls: test.txt: No such file or directory
|
rename() | 重命名文件或文件夹 |
>>> os.system('touch test.txt')
0
>>> os.rename('test.txt', 'test2.txt')
>>> os.system('ls -al test.txt test2.txt')
ls: test.txt: No such file or directory
-rw-r--r-- 1 ****** staff 0 Mar 4 14:48 test2.txt
256
|
rmdir() | 删除文件夹 |
>>> os.system('mkdir dir3')
0
>>> os.rmdir('dir3')
|
spawnv(mode,path,args) spawnve(mode,path, args,env) spawnv(mode,path,args) spawnve(mode,path,args,env) spawnl(mode,path,...) spawnle(mode,path,...,env) |
创建子进程运行path文件 |
>>> os.spawnv(os.P_WAIT, '/bin/ls', ['/bin/ls','test.txt'])
test.txt
0
|
stat() | 显示文件状态,见lstat() | |
stat_float_time() | 用于决定stat_result是否以float对象显示时间戳 |
>>> os.stat_float_times(True)
>>> os.stat('c')
posix.stat_result(st_mode=33188, st_ino=8327356, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=1416, st_atime=1520073503, st_mtime=1520073471, st_ctime=1520073471)
>>> os.stat_float_times(False)
>>> os.stat('c')
posix.stat_result(st_mode=33188, st_ino=8327356, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=1416, st_atime=1520073503, st_mtime=1520073471, st_ctime=1520073471)
|
stat_result() | 创建stat_result对象 | |
startvfs_result() | 创建statvfs_result对象 | |
strerror() | 错误码转字符串 |
>>> os.strerror(1)
'Operation not permitted'
|
system() | 执行shell命令 |
>>> os.system('ls -al')
|
tempnam() | 创建临时文件,返回文件名 |
>>> a = os.tempnam('var/tmp/')
>>> a
'/var/tmp/tmp.AHs7r2'
>>> os.system('ls -al /var/tmp/tmp.AHs7r2')
ls: /var/tmp/tmp.AHs7r2: No such file or directory
256
|
times() | 返回进程执行用户、内核等时间相关数据(utime, stime, cutime, cstime, elapsed_time) |
>>> os.times()
(3.52, 1.12, 0.0, 0.0, 1520148302.85)
|
tmpfile() | 创建临时文件,返回文件对象 |
>>> fd = os.tmpfile()
>>> fd.write('this is test.txt')
>>> fd.seek(0)
>>> fd.read()
'this is test.txt'
|
tmpnam() | 创建临时文件,返回文件名,不可指定路径 |
>>> b = os.tmpnam()
>>> b
'/var/tmp/tmp.1.HHpTAm'
>>> os.system('ls -al /var/tmp/tmp.1.HHpTAm')
256
ls: /var/tmp/tmp.1.HHpTAm: No such file or directory
|
umask() | 设置umask |
>>> os.umask(222)
18
>>> os.system('touch dd; ls -al dd')
-r--r----- 1 ****** staff 0 Mar 4 15:44 dd
0
>>> os.umask(18)
>>> os.system('touch aa; ls -al aa')
-rw-r--r-- 1 ****** staff 0 Mar 4 15:46 aa
0
|
unlink() | 用于删除文件,如果文件是一个目录则返回一个错误 |
>>> os.unlink('aa')
|
urandom() | 随即产生n个字节的字符串,可以作为随机加密key使用 |
>>> os.urandom(5)
'\xaf\xb8\x8b*\x84'
|
utime() | 用于设置指定路径文件最后的修改和访问时间 |
>>> st = os.stat('cc')
>>> print st.st_atime, st.st_mtime
1520149076 1520149076
>>> os.utime('cc', (1520149075, 1520149075))
>>> os.stat('cc')
posix.stat_result(st_mode=33206, st_ino=9332119, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1520149075, st_mtime=1520149075, st_ctime=1520149886)
|
waitpid() | 等待进程完成 | |
write() | 写入数据 | |
makedirs() | 用于递归创建目录。像 mkdir(), 但创建的所有intermediate-level文件夹需要包含子目录。 |
>>> os.makedirs('./x/y/z')
|
removedirs() | os.removedirs() 方法用于递归删除目录。 |
>>> os.removedirs('./x/y/z')
|
renames() | 用于递归重命名目录或文件 |
>>> os.renames('bb', 'xx/bb')
>>> os.system('ls -al xx/bb')
--w-rw-rw- 1 tobyytang staff 0 Mar 4 15:36 xx/bb
0
|
walk() | 列出指定目录下所有文件和文件夹 |
>>> os.system('mkdir test1; cd test1; touch aa bb; mkdir test2; cd test2; touch cc')
|
getenv() | 获取环境变量 |
>>> os.environ['TERM']
'emacs'
>>> os.getenv('TERM')
'emacs'
|