Python -- 文本的读与写

“””
DHCP
Dynamic 动态 Host 主机 Configuration 配置 Protocol 协议
TCP/IP family
IP 网际协议
TCP 传输控制协议 构建于IP之上
“”“

r 读文件
w 写文件
rb 读二进制文件
wb 写二进制文件
异常机制 - 处理程序在运行过程中出现的意外状况的手段
因为不是所有的问题都能够在写程序调试程序的时候能发现
打开文件 –> 判断大小 –> 分配内存 –> 读取文件 –> 关闭文件
import time
"""
# 读文件
def main(): # 下列方法,即使读取一半,而后文件崩溃,也可以自己释放,自动关闭,优于“fs = open()  fs = close()”
    try:
        with open('./build/hello', 'r', encoding='utf - 8') as fs:  # “./ ”一个点-当前路径,两个点-上一路径;
            # content = fs.read() # 一次性读全部文档
            # print(content)
            # for line in fs:    # 一行行的读
            #     print(line,end='')
            #     time.sleep(0.5)
            my_list = fs.readlines()   # 返回到列表容器里面
            print(my_list)
    except FileNotFoundError as e :
        print(e)
        print('指定的文件无法打开')
    except IOError:
        print('指定的文件无法打开')
    print('程序执行结束')
    #  “try:     except FileNotFoundError:” 保护文件不会崩溃,如果文件打不开就执行except FileNotFoundError:后的内容


if __name__ == '__main__':
    main()


# 写文件
def main():
    try:
        with open('hello', 'w', encoding='utf - 8') as fs:  # 'w'完全改写   'a' 内容末尾追加
            fs.write('轻轻的我走了\n')
            fs.write('正如我轻轻的来\n')
    except FileNotFoundError as e :
        print(e)
        print('指定的文件无法打开')
    except IOError:
        print('指定的文件无法打开')
    print('程序执行结束')

if __name__ == '__main__':
    main()



def main():
    try:
        with open('hello.png', 'rb') as fs1:
            data = fs1.read()
            print(data)
            print(type(data))
        with open('./build/hello.png', 'wb') as fs:
            fs.write(data)
    except FileNotFoundError as e :
        print(e)
        print('指定的文件无法打开') 
    except IOError:
        print('指定的文件无法打开')
    print('程序执行结束')


if __name__ == '__main__':
    main()

# BASE64 编码 - 文本与二进制互相转换
# json - Javascript Object Notation 带格式的纯文本
# http://json.org  

"""
from  math import sqrt


def is_prime(n):
    assert n > 0   # '断言',若不满足条件,程序直接结束
    for factor in range(2,int(sqrt(n)) + 1):
        if n % factor == 0:
            return False
        return True if n != 1 else False


def main():
    filenames = ['a.txt','b.txt','c.txt']
    fs_list = []
    try:
        # 把可能出状况(在执行时有风险)的代码放到try中
        for filename in filenames:
            fs_list.append(open(filename, 'w', encoding='utf - 8'))
        for n in range(1,10000):
            if is_prime(n):
                if n < 100:
                    fs_list[0].write(str(n), end='\n')
                elif n < 1000:
                    fs_list[1].write(str(n), end ='\n')
                else:
                    fs_list[2].write(str(n), end='\n')
    except FileNotFoundError as e:
        print('指定的文件无法打开')
    # expect 可以写多个分别用于处理不同的异常状况
    except IOError:
        # 如果try中出现了状况就通过except来捕获错误(异常)进行对应的处理
        print('读写文件错误')
    else:
        pass
        # 如果没有出现状况那么可以把无风险的代码放到else中执行
    finally:
        # 不管程序正常还是异常最后这里的代码一定会执行
        # 所以此处最适合做释放外部资源的操作
        # 此处时最好的释放外部资源的位置因为这里的代码总是会执行的
        for fs in fs_list:
            fs.close()
    print('操作完成')
if __name__ == '__main__':
    main()
例. json 读、写操作
import json


def main():
    try:
        with open('data.json', 'r', encoding='utf-8') as fs1:
            your_dict = json.load(fs1)
            print(type(your_dict))
            print(your_dict)
    except IOError as e:
        print(e)
    print('读取数据完成')


if __name__ == '__main__':
    main()
import json


def main():
    my_dict = {
        'name': 'xl',
        'age': '25',
        'QQ': '110',
        'friends': ['yqx', 'yc'],
        'car': [{'append': 'auto', 'speed': '120'},
               {'append': 'byd', 'speed': '119'},
               {'append': 'benz', 'speed': '911'}
        ]

    }
    try:
        with open('data.json', 'w', encoding='utf - 8') as fs:
            json.dump(my_dict, fs)
    except IOError as e:
        print(e)
    print('数据保存完成')


if __name__ == '__main__':
    main()
小结:在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。
例.从天行数据上获取图片网址及下载图片~
import requests
import json


def main():
    resp = requests.get('http://api.tianapi.com/meinv/?key=自己注册后获得&num=10')
    my_dict = json.loads(resp.text)
    for temp_dict in my_dict['newslist']:
        pic_url = temp_dict['picUrl']
        print(temp_dict['picUrl'])
        resp = requests.get(pic_url)
        filename = pic_url[pic_url.rfind('/') + 1:]
        try:
            with open(filename,'wb') as fs:
                fs.write(resp.content)
        except IOError as e:
            print(e)


if __name__ == '__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值