09:在python中文件读取、写入操作和模块、包的导入 您所在的位置:网站首页 模块文件读取失败 09:在python中文件读取、写入操作和模块、包的导入

09:在python中文件读取、写入操作和模块、包的导入

2024-06-21 18:20| 来源: 网络整理| 查看: 265

以下内容仅做自己学习使用,知识点内容来自柠檬班,转载请标记来源

@Author:木又 @File:demo1_python打开文件.py @Time:2021/3/09 19:10 @Name:Ta Quan Ge

在python中读取文件 open(文件名,打开文件的模式,encoding = “utf-8”) 注意点: 被打开的文件和当前文件在同一路径下,可以写文件名 被打开的文件和当前文件不在同一路径下,可以写文件完整的路径

#**1.打开文件** # 同一路径下读取 f = open("Test.txt", "r", encoding="utf8") # 不同路径下读取 f = open(r"D:\project\learn_31python\py_08day\case05.txt", "r", encoding="utf8") #**2.读取文件内容** content = f.read() print(content) #**3.关闭文件** f.close()

@Author:木又 @File:demo2_python中读取文件的几种方法.py @Time:2021/03/09 19:23

1.打开文件

f = open("case.txt", "r", encoding="utf8") # 同一路径下读取 f = open(r"D:\project\learn_31python\py_08day\case05.txt", "r", encoding="utf8") # 不同路径下读取

2.读取文件内容 2.1第一种方式 read:读取所有的内容

f = open(r"D:\project\learn_31python\py_08day\case05.txt", "r", encoding="utf8") # 不同路径下读取 content = f.read() print(content)

2.2第二种方式 readline:每次读取1行内容

f = open(r"D:\project\learn_31python\py_08day\case05.txt", "r", encoding="utf8") # 不同路径下读取 # 默认读取第1行的内容 content = f.readline() # 传参数则会默认读取第一行中的多少个字符 # content = f.readline(9) print(content) # 与for循环配合使用,遍历读取每一行的数据 f = open(r"D:\project\learn_31python\py_08day\case05.txt", "r", encoding="utf8") # 不同路径下读取 for i in range(3): print(f.readline())

2.3第三种方式 readlines:按行把所有内容读取到列表中,每一行就是列表中的一个元素

f = open(r"D:\project\learn_31python\py_08day\case05.txt", "r", encoding="utf8") # 不同路径下读取 content = f.readlines() print(content)

使用2.3的读取方法就可以指定读取某一行的内容

f = open(r"D:\project\learn_31python\py_08day\case05.txt", "r", encoding="utf8") # 不同路径下读取 content = f.readlines()[2] print(content)

3.关闭文件

f.close()

@Author:木又 @File:demo3_文件写入.py @Time:2021/3/9 19:44 @Name:Ta Quan Ge

**打开文件的模式 r: 只读模式(read),如果文件不存在,则会报错,控制台提示找不到文件

w:写入模式(write),覆盖式写入,如果文件不存在,则会自动创建

a: 写入模式(append),追加写入(在原有内容的尾部,写入新的内容),如果文件不存在, 则会自动创建

通常用来读写非文本格式的文件 rb: 只读模式(read),以二进制模式打开,如果文件不存在,则会报错,控制台提示找不到文件

wb:写入模式(write),以二进制模式打开,覆盖式写入,如果文件不存在,则会自动创建

ab: 写入模式(append),以二进制模式打开,追加写入(在原有内容的尾部,写入新的内容),如果文件不存在, 则会自动创建

‘’’

# 打开 f = open(r"D:\project\learn_31python\py_08day\case05.txt", "w", encoding="utf8") # 写入内容 f.write("测试") # 关闭文件 f.close() # 文件不存在,则会自动创建 # # 打开 f = open(r"D:\project\learn_31python\py_08day\case09.txt","w",encoding="utf8") # 写入内容 f.write("测试") # 关闭文件 f.close() # a: 写入模式(append),追加写入(在原有内容的尾部,写入新的内容),如果文件不存在, # 则会自动创建 # 打开 f = open(r"D:\project\learn_31python\py_08day\case09.txt","a",encoding="utf8") # 写入内容 f.write("_python") # 关闭文件 f.close()

复制图片

# # 第一步:打开文件 f1 = open("Taquange.jpg","rb") f2 = open("Taquange_copy.jpg","wb") # 第二步:读取内容,写入新文件 content = f1.read() f2.write(content) # 第三步:关闭文件 f1.close() f2.close() # 复制文件 # 第一步:打开文件 f1 = open("test.xlsx", "rb") f2 = open("test_copy.xlsx", "wb") # 第二步:读取内容,写入新文件 content = f1.read() f2.write(content) # 第三步:关闭文件 f1.close() f2.close()

@Author:木又 @File:demo4_通过with操作文件.py @Time:2021/3/9 20:26 @Name:Ta Quan Ge

with:通过with去打开文件,操作完了之后会自动关闭文件

# # 复制图片 # # 第一步:打开文件 # f1 = open("Taquange.jpg","rb") # f2 = open("Taquange_copy.jpg","wb") # # 第二步:读取内容,写入新文件 # content = f1.read() # f2.write(content) # # 第三步:关闭文件 # f1.close() # f2.close() # 以上代码可简化为: with open("Taquange.jpg","rb") as f1: content = f1.read() with open("Taquange01.jpg","wb") as f2: f2.write(content) # print(content)

@Author:木又 @File:demo5_模块和包.py @Time:2020/7/21 20:36

一、模块和包 模块:在pyhton中只要是.py结尾的文件都可以称之为模块

包:包含一个__init__.py文件夹就可以称之为一个pyhton的包

二、模块和包导入:

1.模块导入: import 模块名

from 包名(如果存在多级嵌套的情况) import 模块名 (如果存在多级嵌套的情况,需要一级一级往下走)

2.导入模块中的某个函数或者变量 from 包名.模块名 import 变量/函数/类

""" __init__.py有什么作用 #是python包的标识 关于if __name__=='__main__': __name__:他是python中的一个魔法变量(值不是固定的) 当文件作为程序入口文件(启动文件时),它的值为__main__ 该模块作为被其他模块导入的时候,它的值为模块名 """ def fun(n): for i in range(1, n + 1): for j in range(i): print("* ",end="") print() # 下面这个文件只有在直接运行该文件的时候才会成立(该文件作为启动文件) if __name__ == '__main__': # 如果不加此条件,被导入此模块的模块就会直接打印出来以下内容 print("666") print("666") print("666")

在进行包导入时,可以将之前的包名更改,但是在调用时要用更改的名 from xxx import xxx as 别名

关于python中包导入的搜索路径 ‘’’ -----------------------------导入模块---------------------------

方式一: 如果要导入的模块和当前模块在同一个目录下,可以直接 ,import 模块名 (由于pycharm识别不到,会有红色波浪线,实际上是可以使用的)

import pack01_demo1 pack01_demo1.fun(4)

方式二: 相对于项目路径,一级一级往下导入,from 包名 import 模块名

from py_09day.pack01 import pack01_demo1 pack01_demo1.fun(3)

-----------------导入模块中的函数或者变量---------------

导入模块中的某个函数或者变量 from 包名.模块名 import 变量/函数/类

from py_09day.pack01.pack01_demo1 import fun fun(4)

@Author:木又 @File:work_09day.py @Time:2020/7/21 23:17 @Name:Ta Quan Ge

第一题:当前有一个txt文件,内容如下: 数据AAAA 数据BBBB 数据CCCC 数据DDDD 要求:请将数据提取处理,转化为一下格式 {‘data0’:‘数据AAAA’,‘data1’:‘数据BBBB’,‘data2’:‘数据CCCC’,‘data3’:‘数据DDDD’}

# def read_fun(): # with open(r"D:\project\learn_31python\py_09day\work_data.txt", "r", encoding='utf8') as f: # content = f.readlines() # dic = {} # for index, data in enumerate(content): # key = f"data{index}" # value = data.replace("\n", "") # dic[key] = value # return dic # # # res = read_fun() # print(res) # 第二题:当前有一个case.txt文件,里面中存储了很多用例数据: 如下,每一行数据就是一条用例数据, # 文件中数据 # url:www.baidu.com,mobilephone:13760246701,pwd:123456 # url:www.baidu.com,mobilephone:15678934551,pwd:234555 # url:www.baidu.com,mobilephone:15678934551,pwd:234555 # url:www.baidu.com,mobilephone:15678934551,pwd:234555 # url:www.baidu.com,mobilephone:15678934551,pwd:234555 # ​ # # 要求一: 请把这些数据读取出来,到并且存到list中,格式如下 # [ # {'url': 'www.baidu.com', 'mobilephone': '13760246701', 'pwd': '123456'}, # {'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'}, # {'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'}, # {'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'}, # {'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'} # ] def read_case(): with open(r"D:\project\learn_31python\py_09day\work_case.txt", "r", encoding='utf8') as f: content = f.readlines() li = [] for i in content: res = i.split(",") dic = {} for j in res: res1 = j.split(':') key = res1[0] value = res1[1].replace('\n', '') dic[key] = value li.append(dic) return li data = read_case() print(data) # # 要求二:将上述数据再次进行转换,转换为下面这种字典格式格式 # ​ # { # 'data1':{'url': 'www.baidu.com', 'mobilephone': '13760246701', 'pwd': '123456'}, # 'data2':{'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'}, # 'data3':{'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'}, # 'data4':{'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'}, # 'data5':{'url': 'www.baidu.com', 'mobilephone': '15678934551', 'pwd': '234555'} # } # ​ # # 提示:需要使用字符串的分割方法 # ​ # # 注意点:数据中如果有换行符'\n',要想办法去掉。 # from py_09day.workread_data import read_case # # # def fun_dic(): # dic = {} # for index, data in enumerate(read_case()): # key1 = f"data{index + 1}" # value1 = data # dic[key1] = value1 # return dic # # # work_dic = fun_dic() # print(work_dic) # 第三题:之前上课讲了一个注册功能的案例,再之前案例的功能上进行升级, # 要求:把所有用户数据放到文件中进行保存,数据存储的格式不限,原来的案例代码如下 def register(): # 读取文件中已注册的数据 with open(r"D:\project\learn_31python\py_09day\workuser_data", "r", encoding="utf8") as f: #将读取的内容,使用eval识别字符串的列表(因为f.read()返回的类型是“str”) users = eval(f.read()) id = input("请输入账号:") pwd = input("请输入密码:") pwd2 = input("请再次确认密码:") # 遍历所有的账号 for u in users: # 判断账号是否已经被注册,输入的名称与遍历到的值做比较 if id == u["uid"]: print("该账号已经被注册!") break else: # 如果账号没有注册,那么for循环中的break不会执行。则会执行for对应的else语句 print("该账号可以注册,继续判断密码!") # 判断两次密码是否一致 if pwd == pwd2: # 输入的账号密码已字典的形式加入道users中 users.append({"uid": id, "pwd": pwd}) print("注册成功!") else: print("两次输入的密码不一致") # # 运行结束后,将所有的用户数据写入文件 with open(r"D:\project\learn_31python\py_09day\workuser_data", "w", encoding="utf8") as f: #将列表转换为字符串,写入文件 f.write(str(users)) register() # with open(r"D:\project\learn_31python\py_09day\workuser_data", "r", encoding="utf8") as f: # datas = eval(f.read()) # print(datas) # 提示: # 每次运行程序,先去文件中读取所有注册过的用户数据, # 程序运行完之后,将所有的用户数据再次写入到文件 # 可以把保存账号的列表转为字符串直接写入文件,读出来的时候,再把字符串转换为列表


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有