文件
① 打开文件
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将该目录当成一个包处理。
如下图,这是一个声音处理的模块集,也可以看成一个声音处理的包。
领取专属 10元无门槛券
私享最新 技术干货