python学习day05 文件

f=open("a.txt","r",encoding="utf-8") #在我的D:/desk/python/project/day03目录下有a.txt文件
data=f.read()
print(data)

#输出a.txt文件内容123abc
#f.close() #关闭文件,回收操作系统级打开的文件
#del f #回收应用程序级的变量,Python会帮我们完成这个,可以不写这条命令
with open("a.txt","r+") as f:
    data=f.read()
    print(data)
#123456
    f.write("abc")
#a.txt中内容变为 123456abc,通常情况下write会清空原内容,但是因为这个是进行了读操作后写的,所以并没有清空,而是类似于追加,w+先读后写并不会有同样的效果

with open("a.txt","r") as read_f,open("b.txt","w") as write_f:
    data=read_f.read()   #读a.txt
    write_f.write(data)  #把data中内容写到b.txt中,这时创建一个b.txt文件,其内容为123456abc


#文件句柄=open("文件路径","模式")
#打开文件的模式有(默认为文本模式),
#r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
#w,只写模式【不可读;不存在则创建;存在则清空内容】
#a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】

#2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)
#rb
#wb
#ab
#注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

#3,‘+’模式(就是增加了一个功能)
#r+, 读写【可读,可写】
#w+,写读【可写,可读】
#a+, 写读【可写,可读】

#4,以bytes类型操作的读写,写读,写读模式
#r+b, 读写【可读,可写】
#w+b,写读【可写,可读】
#a+b, 写读【可写,可读】
#f=open("d:\desk\python\project\d.txt","w")
#f.write("a") #打印出d.txt中的内容
read(3)  1. 文件打开方式为文本模式时,代表读取3个字符
       2. 文件打开方式为b模式时,代表读取3个字节
'''
'''
dic={"name":"name","price":0,"amount":0}
lis=[]
s1=0
with open("price.txt","rb+") as f:
  #  data=f.readlines()
 #   li=data.strip()
    for line in f:   #文件中迭代就是一行一行读,不必再使用lines了
       li=line.strip().split()
       #print(len(li))
       #print(li[len(li)-1])
       dic["name"]=li[0]
       dic["price"]=int(li[1])
       dic["amount"]=int(li[2])
       #print(dic)
       dicnew=dic.copy()   #这里用变量进行copy是有必要的,不然直接引用dic因为dic只有一个地址会导致列表中保存的dic全部是最后一次数据的dic
       lis.append(dicnew)   #这里只能用append,不能用expend,expend会把字典中的键值单独作为元素加入列表
       #print(lis)
       #lis.extend(dic)  #下边是使用expend后lis的结果
  # ['name', 'price', 'amount', 'name', 'price', 'amount', 'name', 'price', 'amount', 'name', 'price', 'amount', 'name', 'price', 'amount']
print(lis)           #这是使用append的效果,是我们想要的效果,唯一的不足是name前面有"b"这个字符,这是读取文件出现的,现在还不知道怎么解决,等下来老师讲吧
#[{'name': b'apple', 'price': 10, 'amount': 3}, {'name': b'tesla', 'price': 100000, 'amount': 1}, {'name': b'mac', 'price': 3000, 'amount': 2}, {'name': b'lenovo', 'price': 30000, 'amount': 3}, {'name': b'chicken', 'price': 10, 'amount': 3}]
for dic in lis:
    s=dic["price"]*dic["amount"]
    print(s)
    s1=s1+s
print(s1)

'''
'''
       # print(line)     #文件中迭代就是一行一行的读
    
  #  print(data)
#123456
    #f.write("abc")
#**************************************作业1*****************************
# 1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
# apple 10 3
# tesla 100000 1
# mac 3000 2
# lenovo 30000 3
# chicken 10 3
# 通过代码,将其构建成这种数据类型:[{'name':'apple','price':10,'amount':3},{'name':'tesla','price':1000000,'amount':1}......] 并计算出总价钱。

dic={"name":"name","price":0,"amount":0}
lis=[]
s1=0
with open("price.txt","rb+") as f:
    for line in f:  # 文件中迭代就是一行一行读,不必再使用lines了
        li = line.strip().split()
        dic["name"] = li[0]
        dic["price"] = int(li[1])
        dic["amount"] = int(li[2])
        dicnew = dic.copy()
        lis.append(dicnew)
    print(lis)
for dic in lis:
    s=dic["price"]*dic["amount"]
    #print(s)
    s1=s1+s
print(s1)
'''
#************************************作业2*************************
'''
# 2,有如下文件:
# -------
# alex是老男孩python发起人,创建人。
# alex其实是人妖。
# 谁说alex是sb?
# 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
# ----------
# 将文件中所有的alex都替换成大写的SB。
import os

with open('replace.txt',"r",encoding="utf-8") as read_f,open('replace1.txt','w',encoding="utf-8") as write_f:     #"r"可以省略不写
    for line in read_f:
        #print(line)
        line=line.replace('alex','SB')
        write_f.write(line)

os.remove('replace.txt')
os.rename('replace1.txt','replace.txt')
'''
'''
#***************************day03课上作业***************************
#判断一个字符串是否为小数
s="-1231.2"
flag1=0
flag2=0
for a in s:
    #print(a)
    if a!="-" and a!="." and not a.isdigit():
        flag1=0      #要注意的是迭代的时候是一个字符一个字符进行循环的,所以flag的值是一直变化的,而对于小数的判断条件,是以整个字符串进行的,所以在这里用了两个for循环,并用了两个flag
        break
    else:
        flag1=1
if flag1:
    for a in s:
        if s.replace("-","").count(".")==1 and not s.replace("-","").startswith(".") and not s.replace("-","").endswith("."):
            flag2=1
            #print(flag)

if flag2:
    print("s是小数")
else:
    print("s不是小数")

'''
'''
#*******************************day03默写*************
#使用while循环和for循环打印出输入的内容
s=input("你想输入的内容")
count=0
while count<len(s):
    print(s[count])
    count+=1

for a in s:
    print(a)

猜你喜欢

转载自www.cnblogs.com/perfey/p/9134181.html
今日推荐