首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

科学家学习日记(五)文件 模块 类和对象

文件

① 打开文件

open()函数可以打开并返回文件对象。这个函数参数比较多,但初学者只需要关注第一个和第二个就行了,第一个参数是传入的文件名,不带路径的话,就在当前文件夹寻找打开;第二个参数是文件打开模式,不定义的话就默认以只读方式打开。

关于第二个参数具体的模式,自行对表查看。文件打开后,可以对文件进行读取和修改,常用的对象方法也自行对表查看。

例如(#提前将“例子.txt”文件存入当前文件夹):

f =open(“例子.txt”)

② 关闭文件

使用的函数是close(),打开文件进行操作后,要养成关闭文件的习惯,以防断电等情况对文造成损失。

③读取文件

方法为使用read()或readline()函数。read()是按照字节为单位读取,如果不设置参数,那么会全部读取。

例如(在已经打开“例子.txt”的情况下:

f.read()

此外,读取文件也可以用列表,只需将整个文件的内容放到列表中就行。

例如:

list (f)

④ 写入文件

在确保文件是以‘w’或‘a’打开的模式下,可以用write()函数写入文件。

例如:

f = open(“record.txt”,”w”)

f.write(“这是一段我用write函数写入的文字”)

f.close()

注意,如果要在文件之前的内容上追加,一定要用“a”模式打开文件,用“w”模式打开的文件执行写入后,原内容会被覆盖。

OS模块

OS是operation system的简写,用于实现对文件系统的访问。Python是一个跨平台的语言,所以在不同的平台都可以直接访问文件系统,不需要更改源代码。使用时,需要先执行调用(import os),否则会报错。

① getcwd()

获得应用程序当前的工作目录(比如要临时保存文件)

例如:

importos

print(os.getcwd())

运行后:

E:\workspace\pythonlearn

② chdir()

改变当前工作目录,比如可以切换到E盘根目录。

例如:

importos

os.chdir("E:\\")

print(os.getcwd())

运行后:

E:\

③ listdir(path)

获取指定路径下(不指定就当前文件夹)有哪些文件和子目录。

④ mkdir(“文件夹名”)

用于创建文件夹,如果该文件夹存在,就回报错。

⑤ makedirs(r“.\a\b\c”)

用于创建多层目录。

⑥ remove(“文件名”),rmdir(path),removedirs(path)

remove(“文件名”)用于删除文件,rmdir(path)和removedirs(path)用于删除目录和多层目录。

⑦ rename(old,new)

用于重命名文件或者文件夹。

⑧ system(command)

用于调用系统提供的一些小工具。

⑨ walk(top)

用于寻遍指定文件夹下的所有子目录和子文件。

pickle模块

Pickle是泡菜的意思,用于将常规数据类型(任何你想存储的东西)的文件存储为二进制文件。

① 存储

记得先调用模块,使用import pickle。

存储方式:pickle.dump(要存储的文件变量,要存储到的路径变量),路径变量最后精确到具体文件,该文件类型无所谓,但为了便于自己记忆和查看,可以.pkl为后缀。

例如:

importpickle

my_list = [123,3.14,'小样','就这样']

pickle_file =open('E:\workspace\pythonlearn\my_list.pkl','wb')

pickle.dump(my_list,pickle_file)

pickle_file.close()

执行后,就将my_list这个列表中的数据,以二进制形式存储到指定文件夹的my_list.pkl中。

② 读取

如果使用记事本打开,会发现是乱码,因为这是二进制数据,需要用二进制模式(load)打开。

例如:

importpickle

pickle_file =open('E:\workspace\pythonlearn\my_list.pkl','rb')

my_list = pickle.load(pickle_file)

print(my_list)

运行代码后:

[123, 3.14, '小样', '就这样']

类和对象

Python中的对象,其特征被称为“属性”,其行为被称为“方法”。

Python中的类命名约定以大写字母开头(函数的开头字母是小写的)。属性在代码层面就是变量,方法其实就是函数,通过调用这些函数完成某些工作。

属性和方法都是类,而使用类可以创建一个真正的对象,这个对象就叫做类的实例对象。

模块

① 封装

容器,例如列表,元组,字符串,字典等,都是对数据的封装。

函数,就是对语句的封装。

类,是对方法和属性的封装,也就是对函数和数据的封装。

模块是更高级的封装。模块就是程序。

② 模块的导入

一个程序写好之后,就是一个独立的模块,要在另一个程序中调用该模块就需要实现模块的导入,导入方式如下:

(1) 直接import,但在调用时,需要加上模块的命名空间。

例如:计算摄氏度和华氏度的转换。

#计算摄氏度和华氏度的转换1.py

defc2f(cel):

fah = cel *1.8+32

returnfah

deff2c(fah):

cel = (fah -32)/1.8

returncel

#计算摄氏度和华氏度的转换2.py

import计算摄氏度和华氏度的转换1

print("32摄氏度 = %.2f华氏度"% 计算摄氏度和华氏度的转换1.c2f(32))

print("99华氏度 = %.2f摄氏度"% 计算摄氏度和华氏度的转换1.f2c(99))

运行后:

32摄氏度 = 89.60华氏度

99华氏度 = 37.22摄氏度

(2)from 模块名 import 函数名,这种方法不需要加上命名空间。

例如:

from计算摄氏度和华氏度的转换1importc2f,f2c

print("32摄氏度 = %.2f华氏度"% c2f(32))

print("99华氏度 = %.2f摄氏度"% f2c(99))

运行结果也相同。

(3)import 模块名as 新名字,可以用这种方法给导入的命名空间替换一个新的名字。

例如:

import计算摄氏度和华氏度的转换1ascf

print("32摄氏度 = %.2f华氏度"% cf.c2f(32))

print("99华氏度 = %.2f摄氏度"% cf.f2c(99))

运行结果也相同。

③ if __name__ == ‘__main__’:

例如:

defc2f(cel):

fah = cel *1.8+32

returnfah

deff2c(fah):

cel = (fah -32)/1.8

returncel

deftest():

print("32摄氏度 = %.2f华氏度"% c2f(32))

print("99华氏度 = %.2f摄氏度"% f2c(99))

if__name__ =='__main__':

test()

代码中if __name__ == ‘__main__’:的作用是,只在当前程序运行时,才执行test()函数,而如果程序被其他程序引用,test()就不执行。

④ 搜索路径

有的时候,你并不希望所有的模块都在一个文件夹里,这种情况下,模块间的导入就需要用到site-packages,用于添加搜索目录。

例如:

直接运行 sys.path 可显示所有搜索目录。

添加搜索目录的方法:sys.path.appand (“目录“)。

⑤ 包

简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件,这个文件可以为空,它的存在只是一种规定,用于告诉python将该目录当成一个包处理。

如下图,这是一个声音处理的模块集,也可以看成一个声音处理的包。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180813G11U3J00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券