python入门(四)--python模块与常用操作

小王现在要准备建房子(需求),他需要砖头、水泥、石灰、钢筋、门窗、涂料(需要调用的函数或者变量)。在实际建造过程中除了小王本人之外,所有的材料都是从外面购买的,而每一种材料都是有一个专门的加工厂(模块)。小王购买的行为,就是将加工厂内部的物品搬运(导入)到了自己家中。

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仓库

模块的搜索顺序

  1. 搜索当前目录指定的模块名的文件,如果有就直接导入
  2. 如果没有,在搜索系统目录(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:\python\test”)

getcwd()方法:得到当前工作目录

语法: os.getcwd()

isdir()/isfile()方法:检验给出的路径是否是一个目录/文件

os.path.isdir('E:\\book\\temp')

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值