脚本是用 python解释器来编程,如果从 Python解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python标准库的方法。
简单的来说,模块,是用一段代码实现了某个功能的代码集合,本质上是一个py文件。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
如:os 是系统相关的模块;file是文件操作相关的模块
内置模块:
一、os
os.remove() 删除文件 os.unlink() 删除文件 os.rename() 重命名文件 os.listdir() 列出指定目录下所有文件 os.chdir() 改变当前工作目录os.getcwd() 获取当前文件路径os.mkdir() 新建目录os.rmdir() 删除空目录(删除非空目录, 使用shutil.rmtree())os.makedirs() 创建多级目录os.removedirs() 删除多级目录os.stat(file) 获取文件属性os.chmod(file) 修改文件权限os.utime(file) 修改文件时间戳os.name(file) 获取操作系统标识os.system() 执行操作系统命令os.execvp() 启动一个新进程os.fork() 获取父进程ID,在子进程返回中返回0os.execvp() 执行外部程序脚本(Uinx)os.spawn() 执行外部程序脚本(Windows)os.access(path, mode) 判断文件权限(详细参考cnblogs)os.wait() 暂时未知os.path模块:os.path.split(filename) 将文件路径和文件名分割(会将最后一个目录作为文件名而分离)os.path.splitext(filename) 将文件路径和文件扩展名分割成一个元组os.path.dirname(filename) 返回文件路径的目录部分os.path.basename(filename) 返回文件路径的文件名部分os.path.join(dirname,basename) 将文件路径和文件名凑成完整文件路径os.path.abspath(name) 获得绝对路径os.path.splitunc(path) 把路径分割为挂载点和文件名os.path.normpath(path) 规范path字符串形式os.path.exists() 判断文件或目录是否存在os.path.isabs() 如果path是绝对路径,返回Trueos.path.realpath(path) #返回path的真实路径os.path.relpath(path[, start]) #从start开始计算相对路径 os.path.normcase(path) #转换path的大小写和斜杠os.path.isdir() 判断name是不是一个目录,name不是目录就返回falseos.path.isfile() 判断name是不是一个文件,不存在返回falseos.path.islink() 判断文件是否连接文件,返回booleanos.path.ismount() 指定路径是否存在且为一个挂载点,返回booleanos.path.samefile() 是否相同路径的文件,返回booleanos.path.getatime() 返回最近访问时间 浮点型os.path.getmtime() 返回上一次修改时间 浮点型os.path.getctime() 返回文件创建时间 浮点型os.path.getsize() 返回文件大小 字节单位os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径os.path.lexists #路径存在则返回True,路径损坏也返回Trueos.path.expanduser(path) #把path中包含的”~”和”~user”转换成用户目录os.path.expandvars(path) #根据环境变量的值替换path中包含的”$name”和”${name}”os.path.sameopenfile(fp1, fp2) #判断fp1和fp2是否指向同一文件os.path.samestat(stat1, stat2) #判断stat tuple stat1和stat2是否指向同一个文件os.path.splitdrive(path) #一般用在windows下,返回驱动器名和路径组成的元组os.path.walk(path, visit, arg) #遍历path,给每个path执行一个函数详细见手册os.path.supports_unicode_filenames() #设置是否支持unicode路径名
例:
os.makedirs()
即在一个新建的文件里面,继续建文件夹。
#!/usr/bin/python3import ostry: name = "python3" count = 1 for i in range(6): os.makedirs("%s/first%d"%(name,count))#这里面可以直接写文件名,之所以没有写\#是因为后期也很少会写,因为是批量行为,所以不能写死了。直接调用,自动生成文件名。 count += 1except Exception as e: print(e)
运行结果:
os.listdir() 、os.path.isdir()读取目录下文件名并打印出非文件夹的文件内容
import ostry: path = "./python3/first1"#文件夹地址 files = os.listdir(path) #可以获取文件夹里的所有文件名 for i in files: print(i) #提示下面读取的是哪个文件 if not os.path.isdir(i): #判读文件不是文件夹,如果不是,就读取。 f = open(path + "/" + i ,"r") #开始打开文件 for line in f: print(line.strip()) #打印出来,strip去除空格和换行符except Exception as e: print(e)
运行结果:
121.txt111116666.txtwenjianjia[Errno 13] Permission denied: './python3/first1/wenjianjia'
二、sys
Python的sys模块提供访问由解释器使用或维护的变量的接口,并提供了一些函数用来和解释器进行交互,操控Python的运行时环境。
下面就来详细介绍下该模块中常用的属性和方法。
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.modules.keys() 返回所有已经导入的模块列表sys.modules 返回系统导入的模块字段,key是模块名,value是模块 sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息sys.exit(n) 退出程序,正常退出时exit(0) sys.exit()系统返回值sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0sys.version 获取Python解释程序的版本信息sys.platform 返回操作系统平台名称sys.stdout 标准输出sys.stdout.write(‘aaa‘) 标准输出内容sys.stdout.writelines() 无换行输出sys.stdin 标准输入sys.stdin.read() 输入一行sys.stderr 错误输出sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息 sys.exec_prefix 返回平台独立的python文件安装的位置 sys.byteorder 本地字节规则的指示器,big-endian平台的值是‘big‘,little-endian平台的值是‘little‘ sys.copyright 记录python版权相关的东西 sys.api_version 解释器的C的API版本 sys.version_info ‘final‘表示最终,也有‘candidate‘表示候选,表示版本级别,是否有后继的发行 sys.getdefaultencoding() 返回当前你所用的默认的字符编码格式 sys.getfilesystemencoding() 返回将Unicode文件名转换成系统文件名的编码的名字 sys.builtin_module_names Python解释器导入的内建模块列表 sys.executable Python解释程序路径 sys.getwindowsversion() 获取Windows的版本 sys.stdin.readline() 从标准输入读一行,sys.stdout.write(“a”) 屏幕输出asys.setdefaultencoding(name) 用来设置当前默认的字符编码(详细使用参考文档) sys.displayhook(value) 如果value非空,这个函数会把他输出到sys.stdout(详细使用参考文档)sys.stdout.flush() #刷新
1、动态对象
sys.argv 传递给程序的命令行参数列表;其中,sys.argv[0]表示脚本名称,各个参数均为字符串类型。写一个脚本,内容如下:
import sys# filename:argv_test.pyfor i in range(len(sys.argv)): print('argv{0}: type is {1}, value is {2}'.format(i, type(sys.argv[i]), sys.argv[i]))
返回结果:
argv0: type is <class 'str'>, value is ’程序本身路径,这里不显示出来了‘
在命令行下运行该脚本,并提供几个参数
python argv_test.py 1 a 2 b 3 c
输出:
argv0: type is <class 'str'>, value is argv_test.pyargv1: type is <class 'str'>, value is 1argv2: type is <class 'str'>, value is aargv3: type is <class 'str'>, value is 2argv4: type is <class 'str'>, value is bargv5: type is <class 'str'>, value is 3argv6: type is <class 'str'>, value is c
sys.stdout.write 和 print效果基本一样
import sys,timefor i in range(100): sys.stdout.write('>') #print('>',end='') time.sleep(0.05) sys.stdout.flush() #刷新
运行结果:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
三、执行系统命令
可以执行shell命令的模块有:os.system()
import osos.system('dir')
运行结果: