概述
小王现在要准备建房子(需求),他需要砖头、水泥、石灰、钢筋、门窗、涂料(需要调用的函数或者变量)。在实际建造过程中除了小王本人之外,所有的材料都是从外面购买的,而每一种材料都是有一个专门的加工厂(模块)。小王购买的行为,就是将加工厂内部的物品搬运(导入)到了自己家中。
4.1 python模块
对于一个复杂的功能,为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。
在Python中,一个.py文件就称之为一个模块(Module)。即一个文件被看作一个独立的模块,一个模块也可以被看做是一个文件
使用模块可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存 在不同的模块中,因此,在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。
内置模块:如sys, os, subprocess, time, json 等等 使用代码查看:print(help('modules'))
自定义模块:自定义模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。
开源模块:公开的第三方模块, 如 https://pypi.python.org/pypi 。可以使用pip install 安装,类似于手机app应用市场或者是maven仓库
模块的搜索顺序
- 搜索当前目录指定的模块名的文件,如果有就直接导入
- 如果没有,在搜索系统目录(python安装路径)
python中每一个模块都有一个内置属性_ _file_ _可以查看模块的完整路径
_ _name_ _属性,在当前模块内打印的_ _main_ _,如果被调用了则打印调用模块的名称,所以可以使用,所以我们在实际工作中,要习惯编写main()函数用来测试自己编写模块的功能
if __name__ == “__main__”:
main()
as关键字,起别名,用来解决不同模块中存在相同函数的导入问题
4.2 python包
包用于将一组模块归并到一个目录中,将有联系的模块组织在一起,可以有效避免模块名称冲突问题,让应用组织结构更加清晰。
Python语法要求每个包内都必须有__init__.py文件, __init__.py 可包含python代码,但通常为空
_ _init_ _.py文件
要在外界使用包中的模块,需要在_ _init_ _.py中指定对外提供的模块列表
from . import test_modul 语法格式: from . import 对外使用的模块名 |
4.3 python文件操作
Python提供了必要的函数和方法进行默认情况下的文件基本操作。可以用file对象做大部分的文件操作。
open函数
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。
语法:
file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
access_mode属性值
access_mode属性值介绍:
对文件的操作包含 r (读) w(写) a(追加)
r 只读方式打开文件。
rb 以二进制格式打开一个文件用于只读。
r+ 打开一个文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。
w 写的方式打开文件,表示新建或者覆盖文件,也有 wb w+ wb+ 与r类似
a 追加的方式打开文件,表示在文件内容末尾添加内容,也有 ab a+ ab+
注:r、w方式操作文件时,文件指针指向文件开头,a方式时,指向文件末尾
文件对象的属性
file.closed 返回true表示如果文件已被关闭,否则返回false。
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.encoding 返回文件编码。
读取文件内容
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
语法:fileObject.read([count])
在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
举例: a=open('c:/a.txt','r+') str=a.read(3) print (str) |
了解:文件读取时,是从文件开头逐次读取到文件末尾,即当文件读完时,指针所在的位置是文件的末尾
fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
关闭文件:
File对象的close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
语法: fileObject.close()
写入数据
往文件写入数据:
Write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不仅仅是文字。Write()方法不在字符串的结尾不添加换行符('n'):
flush()方法刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件
语法:
fileObject.write(string)
fileObject.flush()
fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。如果需要换行则要自己加入每行的换行符。
文件位置:
Tell()方法告诉你文件指针的当前位置,换句话说,下一次的读写会发生在文件开头这么多字节之后。
seek(offset [,from])方法改变当前文件指针的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
4.4 python文件/目录常用操作
这里我们需要用到一个系统模块 os
rename()方法:
rename()方法需要两个参数,当前的文件名和新文件名。
语法:
os.rename(current_file_name, new_file_name)
remove()方法:
你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。
语法:
os.remove(file_name)
目录操作:
mkdir()方法:可以使用os模块的mkdir()方法在当前目录下创建新的目录
语法:os.mkdir("newdir")
chdir()方法:可以用chdir()方法来改变当前的目录。
语法:os.chdir("newdir")
rmdir()方法:删除目录,目录名称以参数传递。在删除这个目录之前,它的所有内容应该先被清除。
语法:os.rmdir('dirname')
makedirs()方法:创建多级目录:
语法:os.makedirs(“c:pythontest”)
getcwd()方法:得到当前工作目录
语法: os.getcwd()
isdir()/isfile()方法:检验给出的路径是否是一个目录/文件
os.path.isdir('E:\book\temp')
最后
以上就是拉长溪流为你收集整理的python入门(四)--python模块与常用操作的全部内容,希望文章能够帮你解决python入门(四)--python模块与常用操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复