一、import的用法介绍
- 第一种:导入模块:import 包名.模块名
调用函数:包名.模块名。函数名(参数)
- 第二种:导入模块:from 包名.模块名 import 函数名
调用函数:函数名(参数)
- 如果引用的模块在lib下,可以直接使用
注意事项:
- 导入的时候,必须从最顶级开始一层一层的导入,不然会报错
- 导入模块的时候,必须从包名开始导入,否则会报错
我们以导入模块时报错为例:
目录如下:从这两张图中可以很清楚的看到,是直接从class_day03这个包去读的,而忽略了tast_02与class_01的顶级目录是0735
解决问题操作如下:
- 在0735文件夹下面添加文件:__init__py
- 将0735文件更名为day
- 将模块导入语句修改为:(就是在class_day03的前面再加上一个包名day)
from day.class_day03.class_01 import to_choose_drink to_choose_drink()
编译运行:成功
二、os操作文件和目录
import os print("1", os.getcwd()) #获取当前文件的路径:具体到当前文件的文件夹 print("2", os.path.realpath(__file__)) #__file__ 表示当前正在编辑的文件 print("7", os.path.split(os.path.realpath(__file__))[0]) #结果和“1”的结果一致 #os.mkdir("box.txt") #新建一个目录“box” current_now_dir =os.getcwd() 第一步:”#new_dir =os.path.join(current_now_dir,"python7") #新建一个python7的目录 第二步:#new_dir =os.path.join(current_now_dir,"python7","丑八怪") #在Python7下面新建一目录“丑八怪” 第三步:#new_dir =os.path.join(current_now_dir,"python7/丑八怪", "醉了") #在最后一个目录下,前面的路径必须存在 第四步:#new_dir =os.path.join(current_now_dir,"python8","啦啦") #直接新建一个目录“啦啦”(Python8目录不存在)-----这种情况会报错---必须一级一级的进行拼接 os.mkdir(new_dir) print("3", os.listdir()) #获得当前路径下的目录列表,返回列表格式数据 print("4", os.path.isfile(__file__)) #判断当前文件是否为文件,返回布尔值 print("5", os.path.isdir(__file__)) #判断当前文件是否为目录,返回布尔值 print("6", os.path.split(os.getcwd())) #返回的是一个元组,将最后一个目录和前面的目录分割开来 print("8", os.path.exists("test.txt")) #判断是否“test.txt”存在 控制台输出结果是: D:JetBrainsprogramvenvScriptspython.exe/JetBrains/program/untitled/class_day05/class_02.py 1 D:JetBrainsprogramuntitledclass_day05 2 D:JetBrainsprogramuntitledclass_day05class_02.py 7 D:JetBrainsprogramuntitledclass_day05 3 ['class_02.py', 'python7', '__init__.py'] 4 True 5 False 6 ('D:\JetBrains\program\untitled', 'class_day05') 8 False Process finished with exit code 0
三、file 文件 操作文件
- open(file,mode ='r', bu) 内置函数,可以打开文件
- open之后一定要close
- 上下文管理器:with open as
# file = open("test.txt", 'r') #内置函数,可以打开一个文件 # 绝对路径 相对路径 # 同级目录下的为,相对路径 # 据对路径,如果不在同一级目录下, # file = open("D:JetBrainsprogram\untitledclass_day04\test_new", 'r') # read 只读 write只写 append追加 # 非二进制文件 r r+ w w+ a a+ # 二进制文件 rb rb+ wb wb+ ab ab+ """ file = open("test.txt", 'r+', encoding='utf-8') # r只读的方式打开 # r+读写的方式打开,写的内容会在文件后面 a1 = file.read(5) a2 = file.read(4) # 光标会随着改动 file.write("华华") print(a1, a2) """ file = open("test_1.txt", 'w+', encoding='utf-8') # w只写,如果不存在这个file的话那么就会先新建,然后更具你的要求写入 # w只写,如果存在这个file的话,那么就会直接覆盖,重写 # w+ 读写,无论是否存在这个file,写的内容会在文件后面 a1 = file.write("护花使者") print(file.tell()) # 获取当前光标的位置 file.seek(0, 0) # 移动到头部 # 移动光标,seek(offset,[.from]) offset移动的偏移量 # 0:参考位置为文件开头 # 1:参考位置为当前光标所在位置 # 0:参考位置为文件结尾 # offset :正往结束为止移动,负往文件头开始计算相对位置,从文件尾计算时就会引起异常 a2 = file.read(4) print(a2) file = open("test_1.txt", 'a', encoding='utf-8') file.write("sellme") file.seek(0, 0) print(file.read()) # a追加(只能写入),在后面追加,不可以.read # a+ 追加(读写),如果不存在这个file的话那么就会先新建,然后根据你的要求写入,可以.read # a+ 追加(读写),如果存在,则在后面直接写入,可以.read()
- 上下文管理器
with open("test_1.txt", "r") as file: print(file.read())