这是本人去年写的草稿Python教程。

Python之所以强大和它有诸多的模块是分不开的。海龟模块能帮助我们画出漂亮的图形,随机模块能产生随机数,除此之外,还有今天要学的OS模块。它和上述的模块一样是Python内置的。

OS模块概述(Overview of OS Module)

我们天天和计算机打交道,使用各种软件,它们为我们提供各种功能。软件分为三个类型,最低层的的叫输入输出系统,英文为basic input and ouput system,简称BIOS。当计算机开机时,这个软件从固件中读取出来,CPU会执行它。程序会检测计算机各个部件正不正常,如果一切正常,它就会从磁盘中读取操作系统的第一个程序,这个程序就会继续引导计算机运行,直到我们最后看到一切安好的桌面,这时计算机就成功地启动了。上面提到了操作系统,它的英文名为Operating System,简称OS。顾名思义,它是用来操作计算机的一整套系统,我们先简单地把OS看成是程序的集合体。在计算机桌面上,我们能看到各种图标,它们有些对应一个程序,如QQ,酷狗等,它们及其附属文件叫应用软件(application software),这些应用软件通过调用操作系统的一些功能,从而可以帮助我们完成某项任务。我们学的Python功能强大,它也是能调用操作系统的功能的。这是由于它内置了OS模块。要在Python中使用OS模块的各种功能,需要先导入它,用import os这句命令就行了。在OS模块中有很多命令,如新建文件夹(目录),删除文件,重命名文件,遍历路径下面的文件等。所谓路径,它和位置的概念非常像,一个文件有一个位置,一个文件夹也有一个位置。当我们对着文件单击右键,在弹出的菜单中选择属性后,我们就能在属性对话框中看到文件的信息,这其中就有“位置”这个项目。它表明了文件所在的路径或文件夹。

如下图所示:

看到了上面的“位置”两个字吗?它的值是一串以反斜杠分隔的字符。上面图中的文件名是:Python.png。它的位置信息表明了它是在C盘的User文件夹下面的Administrator文件夹下面的Desktop目录,这就是它的路径。在Windows中路径是以反斜杠分隔,而在其它操作系统中,如Linux则是以正斜杠分隔。Python为了能适应多种操作系统,使用os.sep来表示路径的分隔符。下面来看看在windows操作系统中os.sep是什么。

>>> import os         # 导入os模块
>>> os.sep              # 路径分隔符
'\\'                           # 反斜杠
>>>

在上在的代码中,第3句,它显示的是反斜杠。为了使编写的程序能适合任何操作系统,当我们要合成一个路径时,应该使用os.sep。下图是一个文件夹的截图,它里面所有的文件所在的路径都是:C:\Intel\Logs。


当前工作文件夹(Current Work Directory)

当我们编写了一个py文件后,我们会把它保存在一个文件夹里。当双击这个py文件,那么它的当前工作文件夹就是它本身所在的这个目录。如果是在IDLE的shell中,那么当前工作文件夹是什么路径呢?可以通过os的getcwd命令来获取它。如下面代码所示:

>>> import   os           # 导入os模块
>>> os.getcwd()          # 获取当前工作目录
'C:\\Python\\Python36'
>>>

上面的第3行就是当前工作文件夹。当然,每台电脑显示的路径会不一样,这是由安装Python的时候决定的。如果读取文件或创建文件的时候不写明具体的路径,Python就会在当前工作目录中寻找,如果没找到,就会报错。以下的代码就会报错,这是由于当前文件夹并没有叫Python.txt的文件。

>>> open("Python.txt")
Traceback (most recent call last):
File "", line 1, in 
open("Python.txt")
FileNotFoundError: [Errno 2] No such file or directory: 'Python.txt'    # 文件没有找到错误
>>>

当然,如果是写文件,则会在当前文件夹下面创建一个文件,读者可以试试,在此不在赘述。

新建目录(Make Directory)

上面说了,如果以只读模式打开一个不存在的文件,那么就会报文件找不到的错误。当然,我们可以首先把这个文件建好再去打开它。假设,我们把这个文件放在D盘的某个目录,如果那个目录不存在,那么可以手工建立它。更好的方法是用os.mkdir命令自动建立。下面的代码新建了一个目录,然后在那个目录里写入了一个文件:

>>> path = "D:" + os.sep + "我家住在黄土高坡"    # 设定一个路径字符串
>>> os.mkdir(path)                               # 新建一个文件夹
>>> filename = path + os.sep + "真的吗.txt"        # 拟定一个文件名
>>> f = open(filename,mode='w')                   # 创建新的文件
>>> f.write("当然是真的")                          # 写入字符串
5                                                # 返回写入的字符数量
>>> f.close()                              # 关闭文件
>>>

mkdir是用来创建文件夹的,它是英文make和directory两个单词的缩写结合。使用它的方法较为简单,只要在它的小括号里面写上路径名称就行了。需要注意的时,如果直接写路径名当遇到要写路径分隔符的时候,在windows操作系统中要写两个反斜杠,这是由于在Python中反斜杠是一个转义字符。其它的转义字符有回车符号、换行符号、制表符号。它们分别写作\r、\n、\t。简单的理解下,只要记住在Python中连续的两个反斜杠就表示斜杠的意思就行了。

上面的代码会成功创建一个文件并写入字符串,写入的字符个数是5,这在第6行有所体现。现在如果再去打开读取它就不会出错了。注意到上面用的os.sep了吗,在windows中,它的庐山真面目就是反斜杠。sep这三个字符来源于英文separator, 分隔器,分隔符。

OS模块还有很多命令,接下来做几个练习,巩固一下所学的知识。

请指出下列代码的问题。

>>> import OS
>>> print(OS.Sep)

请指出下列代码的问题,如果是正确的会有什么运行结果?

>>> import os
>>> for p in range(10):
os.mkdir("D:" + os.sep + p)

请分析下列代码的运行结果。

import os
import random
path = os.getcwd()
s = ""
for i in range(3):
s = s + str(random.randint(1,1000))
new_path = path + os.sep + s
os.mkdir(new_path)
f = open(new_path + os.sep + s + ".txt",mode='w')
f.write("Hello")
f.close()
print(new_path)

下面是一张文件夹的截图,说一下Global.db文件所在的路径。