学来学去,我才发现,最基础的东西几乎已是无所不能,为啥还去杂乱无章的学这学那?踏踏实实的从标准库学起吧~
今天是os
os.rename:重命名
os.remove:删除文件
os.listdir:用元组列出目录下的所有文件/目录
os.getcwd:获得当前路径
os.chdir:改变路径
os.mkdirs:建立目录层
os.removedirs:删除所给路径中最后一个目录下所有的空目录;rmdir和mkdir函数只能处理单个目录级;
os.stat:处理文件属性。它返回一个类元组对象(stat_result对象, 包含 10 个元素), 依次是st_mode (权限模式), st_ino (inode number), st_dev (device), st_nlink (number of hard links), st_uid (所有者用户 ID), st_gid (所有者所在组 ID ), st_size (文件大小, 字节), st_atime (最近一次访问时间), st_mtime (最近修改时间), st_ctime (平台相关; Unix下的最近一次元数据/metadata修改时间, 或者 Windows 下的创建时间) - 以上项目也可作为属性访问.
os.chmod:修改权限属性
os.utime:修改时间属性
os.system:在当前进程下执行一个新命令, 并等待它完成。命令通过操作系统的标准 shell 执行, 并返回 shell 的退出状态;直接将命令传递给 shell , 所以如果你不检查传入参数的时候会很危险,如果不确定参数的安全性, 那么最好使用EXEC或spawn代替;
os.exec:函数会使用新进程替换当前进程(或者说是"转到进程")
使用 os 模块启动新进程
File: os-exec-example-1.py
import os
import sys
program = "python"
arguments = ["hello.py"]
print os.execvp(program, (program,) + tuple(arguments))
print "goodbye"
hello again, and welcome to the show
Python 提供了很多表现不同的exec函数。execvp函数, 它会从标准路径搜索执行程序, 把第二个参数(元组)作为单独的参数传递给程序, 并使用当前的环境变量来运行程序. 其他七个同类型函数请参阅
Python Library Reference .
在 Unix 环境下, 你可以通过组合使用
exec
,
fork
以及
wait
函数来从当前程序调用另一个程序, 如
Example 1-36 所示.
fork
函数复制当前进程,
wait
函数会等待一个子进程执行结束
使用 os 模块调用其他程序 (Unix)
File: os-exec-example-2.py
import os
import sys
def run(program, *args):
pid = os.fork()
if not pid:
os.execvp(program, (program,) + args)
return os.wait()[0]
run("python", "hello.py")
print "goodbye"
hello again, and welcome to the show
goodbye
fork
函数在子进程返回中返回 0 (这个进程首先从 fork
返回值), 在父进程中返回一个非 0 的进程标识符(子进程的 PID ). 也就是说, 只有当我们处于子进程的时候 "not pid
" 才为真.
fork
和 wait
函数在 Windows 上是不可用的, 但是你可以使用 spawn
函数, 不过, spawn
不会沿着路径搜索可执行文件, 你必须自己处理好这些.