Python基础 - 20210518 - 基础9(文件处理)

知识点 文件操作

  • open()函数

# open()常用的函数
f=open("文件名称",encoding="utf-8") # 打开一个文件流
f.read() # 获取所有的数据,返回string字符串
f.seek(0) # 定义光标位置在最开头的位置
f.readline() #  这个是一次获取一行数据,在read后面直接调用reading会没有数据,因为read已经让光标移动到文件的最末尾,需要关闭文件或定义光标位置
f.close()
f=open("文件名称",encoding="utf-8")
f.readlines() # 读取所有数据,并且返回一个文件内容列表,并且会返回换行符

     # open() 函数的写入
f=open("文件名称",encoding="utf-8",mode='w') # 打开一个文件流,并允许写入
f.write("other~")

#  open()函数的关闭,使用with as的语句就可以不用再次执行关闭
with open("文件名称",encoding="utf-8") as f:
	f.read()
模式描述
mode=r默认为r,read读取模式,文件指针默认在最开始
mode=aadd写入追加模式,如果文件存在,指针在末尾,追加写入内容,如果不存在则创建文件后写入
mode=wwrite写入模式,如果文件存在则覆盖文件内容,然后写入,如果文件不存在,则创建文件后写入
mode=rbreadbyte 二进制只读模式,一般用于图片读取
mode=wbwritebyte 二进制只读模式,一般用于图片写,也是会覆盖的
mode=abaddbyte 二进制追加模式,一般用于图片

知识点 包和路径

# from 后面的路径是从sys.path中截取的
import sys,os
pprint.pprint(sys.path)

# 获取当前路径的绝对路径
cwd = os.path.abspath(__file__)
# 获取cwd的目录目录
dir_name=os.path.dirname(cwd)
# 路径拼接
new_file = os.path.join(dir_name,"new_abc.txt")
open(new_file,mode='w')
f.close

练习

题目1:把以下字典分行添加到文件当中:
person_info = [
{
“name”: “明鹏程”,
“age”: 22,
“gender”: “男”,
“hobby”: “学习”,
“motto”: “学习使我快乐”
},
{
“name”: “萌笑天”,
“age”: 20,
“gender”: “女”,
“hobby”: “拿30K offer”,
“motto”: “下次拿个40K 的”
},
]
得到一个 info.txt 的文件:
name,age,gender,hobby,motto
明鹏程,22,男,学习, 学习使我快乐
萌笑天,20,女,拿30K offer,下次拿个40K 的

# 写入符合题目要求的:
with open("info.txt", mode="a", encoding="utf-8") as f:
    keys=person_info[0].keys()
    strs=""
    for i in keys:
        strs+=i+","
    f.write(strs.strip(","))
    f.write("\n")
    valus_s=""
    for i in person_info:
        value =i.values()
        for j in value:
            valus_s +=str(j)+","
        f.write(valus_s.strip(","))
        valus_s=""
        f.write("\n")


# 写入其他两种形式
with open("person_info.txt", mode="w", encoding="utf-8") as f:
    for i in person_info: 
        for j in i.items(): 
            f.write(f"{j[0]}:{j[1]}") # 第一种方式,每个key,value是一行
            f.write("\n")
        f.write("************\n")
        f.write(str(i))    # 第二种方式,一个字典是一行
        f.write("\n************\n")

题目:cases.txt 文件中有 2 行数据:
url:/futureloan/mvc/api/member/register@mobile:18866668888@pwd:123456
url:/futureloan/mvc/api/member/recharge@mobile:18866668888@amount:1000
把txt里面的两行内容取出然后保存到一个列表和字典当中:(可定义函数)
[
{
‘url’:’/futureloan/mvc/api/member/register’,
‘mobile’:‘18866668888’,
‘pwd’:‘123456’
},
{
‘url’:’/futureloan/mvc/api/member/recharge’,
‘mobile’:‘18866668888’,
‘amount’:‘1000’
}
]



def return_info(filepath):
    with open(filepath, encoding="utf-8") as f:
        lis = []
        for i in f.readlines():
            dicts = {}  # 每循环一行就是一个新的dicts
            info_list = i.split("@")
            for j in info_list:
                info_dicts = j.split(":")
                dicts[info_dicts[0]] = info_dicts[1].strip("\n")
            lis.append(dicts)
        return lis

print(return_info("cases.txt"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值