常见全局函数:
1.dir(nameStr):
常见系统变量:
1.sys.path:一个包含Python自动搜索文件的路径或目录的列表。可使用列表的操作方法修改、增加默认搜索路径。
一、模块
1.创建模块:创建一个扩展名为.py的文件就相当于创建了一个模块,文件名即为模块名,文件中的内容即为模块所包含的内容。
2.导入模块:import 模块名
3.使用模块:模块名.变量名(可为普通变量或函数或类等)
4.导入模块中的某个元素:from 模块名 import 变量。(可多级导入)
5.导入模块中的所有元素:from 模块名 import *。
注:2和4、5的区别:使用2方式时,引用模块中的元素需要使用“模块名.变量名”的形式,而4、5可直接使用变量名。
二、包
1.创建包:
(1)新建一个文件夹,文件夹名即为包名。
(2)在文件夹(包)中创建一个__init__.py文件。(这一步是必须的,不然构不成一个包,注意:init前后各两个下划线)
(3)在文件夹中添加想包含在包中的模块。
(4)在__init__.py中导入这些模块或模块中的元素。
2.导入包:import 包名。
3.使用包:同模块使用方法一样。
4.from 包名 import *的使用:
三、文件操作
1.常用全局内置函数(直接可用的函数,无需引用其他模块)
(1)open(file,op):打开指定文件file,若文件不存在则创建。其中file为文件名,file的路径默认为程序所在的位置,也可指定file的路径。
参数op:(1)“r”或无:若省略参数op,则只是简单打开文件,若文件不存在则会报错,写文件操作也会报错;
(2)“w”:打开并可写文件。若文件已存在,则以前的内容将被清除。
(3)“a”:向文件中追加文本。向已存在的文件中追加内容。
如没有参数“w”则只是简单打开文件,如文件不存在则会报错。 如:a = open("test.txt","w"),a为test.txt的一个文件对象
注:使用open函数打开并写文件时文件时,就算文件存在,Python也会先删除原有文件然后创建新文件,也即文件的内容也随之删除!
2.文件操作函数(需要指定文件对象)
(1)write(astring):向文件中写内容,写入的内容不会自动换行,但可使用换行符“\n”。如:a.write("one line"),此时文件test.txt中出现内容“one line”。
(2)close():关闭文件对象。对一个文件的操作结束是调用。如:a.close()。
(3)readline():从文本中读取一行文本,该函数返回一行的文本字符串,包括换行符“\n”。第一次使用返回文件的第一行文本,第二次返回第二行文本,依此类推。
使用循环可遍历文件中的每一行文本。 如:line1 = a.readline() ->返回a对象所指文件的第一行文本。
(4)read():返回文件中剩余的文本组成的多行字符串,若打开文件时调用则返回文件中的所有内容(即使用read()之前没有使用readline())。
(5)readlines():返回由文件中剩余的文本(行)组成的列表, 遍历返回的列表即可得到每一行的内容。如:
假设一个文本test.txt中包含2行内容:one two
a = open("test.txt"),lines = a.readlines(),print(lines)->["one\n","two\n"]
for line in lines:#遍历文本
print(line,len(line)) ->"one\n",4 注:换行符“\n”也包含在长度内,即比实际内容的长度多1
->"two\n",4
3.os模块常用函数:文件路径相关(使用前要导入os模块:import os)
(1)os.path:与路径有关的模块,包含了路径操作相关的函数。由于路径也是一个字符串,因此,操作路径和操作字符串是一样的。
1)os.path.isfile(filepath):检查路径是不是指向一个文件(注:不是指文件夹)。返回TRUE or FALSE。
2)os.path.join(dir1,dir2):将目录名组合成路径。如:os.path.join("d","test") ->d\test.(不同系统下输出不完全一致)
3)os.path.split(filepath):将路径filepath的最后一个组件(即目录名或文件名)提取出来。该函数返回包含两个项的元组(或两个值):
(最后一个组件的)父目录路径和最后一个组件。如:os.path.split("c:\\python\\test")->("c:\\python","test")。
注:利用此函数可以用递归的方法将一个路径完全分解为目录名:
def split_fully(path):
parent,name = os.path.split(path)
if name == “”: #当一个路径不能再被分解时,第二个值就会返回空字符串
return (parent,) #返回一个元组
else
return split_fully(parent) +(name,)
调用:split_fully("D:\\a\\b\\c") ->("D:\\","a","b","c")
4)os.path.splitext(filename):将一个文件的名称和扩展名分开(即分离扩展名,从而判断文件类型)。
如:s = os.path.splitext("test.txt")->s = ("test",".txt"),s[1]->可获得文件扩展名,若s[1]为空字符串,则为文件夹。
5)os.path.normpath(path):规范或“清理“路径。如:os.path.normpath("c:\\a\\b\\t\\..\\c") ->"c:\a\b\c","清理"了”t\\..“ 。
6)os.path.abspath(filename):将相对路径转化为绝对路径。函数不会检查路径是否存在。
7)os.path.exists(path):检查某个路径是否存在,返回True or False。
8)os.path.isdir(filepath):检查路径是不是指向一个目录(即文件夹)。同isfile对应。
9)os.path.getsize(filepath):在不必打开或扫描某个文件(不是指文件夹)的情况下以字节为单位返回该文件的大小。
注:1.若路径指向的是文件夹(即目录),则返回0;2.若传入的文件或路径不存在则报WindowsError错误。
10)os.path.getmtime(filepath):获得文件上次被修改的时间。返回的值是从1970年到上次修改时间之间的秒数。
注:可用函数time.ctime(seconds)将秒数转化为日期时间格式,在使用该函数前记得导入time模块:import time
(2)os.listdir(path):返回一个目录下所有名称条目,包括文件和子目录等内容。若目录路径不存在则报WindowsError错误。
注:1.返回的条目只是一个名称,没有包含路径,可以用os.path.join(path,条目名)得到相应条目的路径。
2.可对返回的条目进行排序(其实就是列表排序):sorted(os.listdir(path)),默认排序规则:数字->大写字母->小写字母
(3)os.chmod:文件权限相关的模块
4.shutil模块常用函数:文件重命名、移动、复制、删除(使用前先导入shutil模块:import shutil)
(1)shutil.move(src,dest):重命名或移动文件(而不是移动目录(即文件夹))。
注:1)dest所指向的是一个文件,则为重命名;若指向的是一个目录(即文件夹)则为移动文件。
2)src必须指向一个存在的文件,否则不会报错。重命名后的文件可为任意命名,甚至文件可不带后缀。
3)os.rename(src,dest)也具有重命名和移动文件的功能,但不常用。
(2)shutil.copy(src,dest):复制文件。可重新命名新文件。
(3)删除文件:os.remove(file)。注:此方法不是shutil模块的方法。
四、目录操作:创建和删除目录(此处的目录可理解为Windows下的文件夹)
1.os.mkdir(dir):创建目录,要创建的目录的父目录必须存在。
2.os.makedirs(dir):创建目录,要创建的目录的父目录可不存在。若父目录不存在则创建父目录。<简单粗暴>
3.os.rmdir(dir):删除目录,仅对空目录有效。若目录中文件则不能删除。
4.shutil.rmtree(dir):删除目录,目录可不为空。【此函数慎用!】
五、通配
1.含义:在指定目录中找出满足要求的文件
2.模块:glob
3.通配函数:glob.glob(pattern),该函数接受一个模式作为参数,返回所有匹配的文件名和路径名列表。
注:由于返回的文件包含路径,可以使用函数os.path.split(file)将路径和文件分离。
4.常见通配符:
(1)*:匹配0个或多个任意字符。如:m*(匹配所有以字符m开头的文件),*.m*(匹配所有后缀名以字符m开头的文件)。
(2)?:匹配任意单个字符。如:???.txt(匹配恰好包含3个字符的文件.txt文件)。
(3)[...]:匹配方括号中列出的任意一个字符。如:[abc]*(匹配以字符a或b或c开头的文件)。
(4)[!...]:匹配不在方括号中列出的任意一个字符。如:*[!s](匹配文件名不以字符s结尾的文件)。
注:方括号中也可使用表示某个范围的字符。如:[m-p](匹配m,n,o,p中任意一个字母);[!0-9](匹配非数字字符)
5.区分大小写:通配一般是区分大小写的,如M*和m*匹配的内容是不同的。但在Windows下通配是不区分大小写的。
6.glob.glob(dir)和os.listdir(dir)
(1)os.listdir:列出指定目录下包含的文件,但不包括文件的路径,即返回的是相对路径。
(2)glob.glob:可返回多个目录下满足匹配要求的文件,因为可在目录或子目录中指定通配符。
如:glob.glob("*\\*.txt"):返回当前目录的所有子目录中扩展名为.txt的文件。
六、文件异常(IOError)
七、os中的异常(OSError)