一、import的用法介绍



 


  • 第一种:导入模块:import 包名.模块名

                         调用函数:包名.模块名。函数名(参数)



  • 第二种:导入模块:from  包名.模块名  import  函数名

                         调用函数:函数名(参数)



  • 如果引用的模块在lib下,可以直接使用

注意事项:



  • 导入的时候,必须从最顶级开始一层一层的导入,不然会报错
  • 导入模块的时候,必须从包名开始导入,否则会报错

我们以导入模块时报错为例:

python file写到第几行_python file写到第几行



目录如下:从这两张图中可以很清楚的看到,是直接从class_day03这个包去读的,而忽略了tast_02与class_01的顶级目录是0735




python file写到第几行_python file写到第几行_02


解决问题操作如下:


  • 在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:\JetBrains\program\venv\Scripts\python.exe/JetBrains/program/untitled/class_day05/class_02.py
1 D:\JetBrains\program\untitled\class_day05
2 D:\JetBrains\program\untitled\class_day05\class_02.py
7 D:\JetBrains\program\untitled\class_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:\JetBrains\program\\untitled\class_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())