python-day06-数据类型转换和文件

1.类型的转换

int和str
v1=int("123")
v2=str(123)

list和tuple
v1=tuple([11,22,33,44])
v2=list[(11,22,33,44)]

其他
v1=list("我爱中国")   #["我","爱","中","国"]

dict——>list
v1={"k1":123,"k2":456}
v2=list( v1.keys() )  #["k1","k2"]
v3=list( v1.values() ) #[123,456]

其他——>bool
所有的类型转换成布尔值只有;None,0,空字符串,空元组,空列表,空字典为False,其他均为True

2.编码

*ascli编码,256种对应关系 1个字节表示对应关系,1个字节8位

W   01010111
00000000-111111111

*GB2312/GBK编码 2个字节表示对应关系

000000000 000000000
111111111 111111111

*unicode万国码 4个字节表示对应关系

000000000 000000000 000000000 000000000
111111111 111111111 111111111 111111111
v1="辽宁省"    #12个字节

网络传输或文件存储
好处:包括所有字符
坏处:浪费存储空间

*utf-8编码,对unicode进行压缩处理

v1="辽宁省"               #字符串类型str   ——>unicode

v2=v1.encode('utf-8')     #压缩成字节类型 bytes
print(v1) 
v1=v2.decode('utf-8')
print(v1)    #"辽宁省"
name="中国联通"
data=name.encode('utf-8')
#打开文件
f=open("db.txt",mode='wb')
#写入内容
f.write(data)
#关闭文件
f.close

3.文件操作

打开文件 操作文件:读取,写入 关闭文件

*打开

相对路径:相对于当前运行的代码文件的路径

绝对路径:直接路径

打开模式:write+字节(压缩) wb

                  w文件不存在就创建,打开前会清空文件内容

                   append+字节(压缩) ab

                   a文件不在就创建,在尾部追加内容

name="中国\n联通"   #\n换行
data=name.encode('utf-8')
#打开文件
f=open("db.txt",mode='wb')
#写入内容
f.write(data)
#关闭文件
f.close

中国
联通
将用户注册的信息保存在文件中
while True:
 name=input("请输入姓名")
 if name.upper()=="Q":
    break
 line="{}\n".format(name)
 data=line.encode('utf-8')
#打开文件
 f=open("account.txt",mode='ab')
#写入内容
 f.write(data)
#关闭文件
 f.close()

网络传输数据

   import requests

#去网络上发送请求并获取数据
res=requests.get("url")

#原始数据——>压缩编码之后的数据=字节类型
print(res.content)
f=open('new1.txt',mode='wb')
f.write(res.content)
f.close

text=res.content.decode('uts-8')
new_text=text.replace("code","coding")
f=open("new2.txt",mode='wb')
f.write(new_text.encode('utf-8'))
f.close()

*读取文件内容

       unicode                            utf-8/gbk
      字符串str                           字节bytes
      "张三"                              b'\xe6\xad\xa6\xe6\x9b'
      代码                                网络和文件存储
          ——>"xx".encode('utf-8')
  b'\xe6\xad\xa6\xe6\x9b'.decode('gbk') <——
f=open('account.txt',mode='rb')
#读取压缩后的数据
content=f.read()

f.close
#字节转换字符串
data_string=content.decode('utf-8')
print(data_string)

data_list=data_string.split("\n")
print(data_list)    #列表
字符串转换成字节,压缩——>写入文件
name="张三"
v1=name.encode('utf-8')

字节转换成字符串,还原——>文件处理
data_str=content.decode('utf-8')
print(data_str)
读取信息,并
f=open("account.txt",mode='rb')
count=f.read()
f.close()
 
data_string=count.decode('utf-8')
data_list=data_string.split("\n")
print(data_list)

4.练习题

实现用户注册,包括用户名、密码、邮箱
 f=open("massage.txt",mode='ab')
 
while 1:
 name=input("请输入姓名:")
 if name.upper()=="Q":
    break
 pwd=input("请输入密码:")
 email=input("请输入邮箱:")
 line="{},{},{}\n".format(name,pwd,email)
 data=line.encode('utf-8')
 f.write(data)
 f.flush()    #防止宕机,及时保存
 f.close()

f=open("massage.txt",mode='rb')
count=f.read()
f.close()
data_str=count.decode('utf-8')
data_list=data_str.split("\n")
print(data_list)
info={
  "name":"lisa"
  "data":[
          {"id":"1","title":"xxx","url":"..."}
          {"id":"2","title":"xxx","url":"..."}
     ]
}
for item in info["data"]:   #for item in info["data"]["date"]: 
  id=item['id']
  title=item['title']
  url=item['url']
  
import requests

#去网络上发送请求并获取数据
res=requests.get("url")
data_dict=res.json()

f=open("a.txt",'ab')
for item in data_dict['data']['result']:
  a1=item['a']
  b1=item['b']
  
  line="{}|{}\n".format(a,b)
  f.write(line.encode('utf-8'))
  f.flush()
f.close()
#打开文件
#读取每一行数据并输出
#对每一行数据通过,分割,取0 1 索引
#构建字典

data_dict={}
f=open("db.txt",'rb')
content=f.read()
data_str=content.decode('utf-8')
data_str=data_str.strip()

massage=data_str.split("\n")
for item in massage:
  line=item.split(",")
  a1=line[0]
  a2=line[1]
  data_dict[a1]=a2
print(data_dict)
发送网络请求下载图片

import requests
res=requests.get("https://seopic.699pic.com/photo/50115/6108.jpg_wh1200.jpg")

f=open("v1.jpg,",mode='wb')
f.write(res.content)
print(res)
读取并下载db.txt文档内容
import requests
f=open('db.txt',mode='rb')
content=f.read()
f.close()

data_str=content.decode('utf-8')
data_str=data_str.strip()
data_list=data_str.split('\n')

for line in data_list:
  ele_list=line.split(',')
  file_name="{}.png".format(ele_list[0])
  url=ele_list[-1]

  res=requests.get(url)
  img=open(file_name,mode='wb')
  img.write(res.content)
  img.close()

5.关于模式

f=open("文件路径",mode='wb')
f.write("张三".encode('utf-8'))

f=open("文件路径",mode='w',encoding='utf-8')
f.write("张三")
f=open("文件路径",mode='rb')
data=f.read()
content=data.decode('utf-8')

f=open("文件路径",mode='r',encoding='utf-8')
content=f.read()

开发时,如果文档中写入的是字符串文本,建议:mode='r',encoding='utf-8'

如果图片/视频...建议:mode='rb'

6.关于大文件

txt文档,100G文件

f=open("文件路径",mode='r',encoding='utf-8')
content=f.read()      #把所有的内容读取到内存

f=open("文件路径",mode='r',encoding='utf-8')

#逐行读取文件
for line in f:
  line=line.strip()
  if not line:
  continue
  print(line)

f.close()

mp4文件,100G

import os
total_size=os.stat("文件路径").st_size
print(total_size)

f=open("文件路径",mode='rb')

has_read_size=0
while has_read_size<total_size:

    data=f.read(3)    #先读3个字节
    print(data)
    has_read_size=has_read_size+len(data)
    
f.close()

7.with打开

with open("文件路径",mode='r',encoding='utf-8') as f:   #自动关闭文件
content=f.read()
print(content)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值