Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 719|回复: 0

python文件读写和异常

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-17 12:17:11 | 显示全部楼层 |阅读模式

    1,文本文件

    • 普通打开

      f.open

      f.close

      def main():
          f = None
          try:
              f = open('致橡树.txt', 'r', encoding='utf-8')
              print(f.read())
          except FileNotFoundError:
              print('无法打开指定的文件!')
          except LookupError:
              print('指定了未知的编码!')
          except UnicodeDecodeError:
              print('读取文件时解码错误!')
          finally:
              if f:
                  f.close()
      
      
      if __name__ == '__main__':
          main()
      
    • with关键字

      with open as f

      def main():
          try:
              with open('致橡树.txt', 'r', encoding='utf-8') as f:
                  print(f.read())
          except FileNotFoundError:
              print('无法打开指定的文件!')
          except LookupError:
              print('指定了未知的编码!')
          except UnicodeDecodeError:
              print('读取文件时解码错误!')
      
      
      if __name__ == '__main__':
          main()
      
    • for-in循环逐行读取或者用readlines方法将文件按行读取到一个列表容器中

      import time
      
      
      def main():
          # 一次性读取整个文件内容
          with open('致橡树.txt', 'r', encoding='utf-8') as f:
              print(f.read())
      
          # 通过for-in循环逐行读取
          with open('致橡树.txt', mode='r') as f:
              for line in f:
                  print(line, end='')
                  time.sleep(0.5)
          print()
      
          # 读取文件按行读取到列表中
          with open('致橡树.txt') as f:
              lines = f.readlines()
          print(lines)
          
      
      if __name__ == '__main__':
          main()
      
    • 写入文本文件

      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:
               for filename in filenames:
                   fs_list.append(open(filename,'w',encoding='utf-8'))
      
               for num in range(1,10000):
                   if is_prime(num):
                       if num < 100:
                           fs_list[0].write(str(num)+"\n")
                       elif num < 1000:
                           fs_list[1].write(str(num)+"\n")
                       else:
                           fs_list[2].write(str(num)+'\n')
           except IOError as e:
               print(e)
               print("文件写入错误")
           finally:
               for fs in fs_list:
                   fs.close()
           print("操作完成")
      
      if __name__ == '__main__':
          main()
      

    2,二进制文件

    def main():
        try:
            with open('guido.jpg', 'rb') as fs1:
                data = fs1.read()
                print(type(data))  # <class 'bytes'>
            with open('吉多.jpg', 'wb') as fs2:
                fs2.write(data)
        except FileNotFoundError as e:
            print('指定的文件无法打开.')
        except IOError as e:
            print('读写文件时出现错误.')
        print('程序执行结束.')
    
    
    if __name__ == '__main__':
        main()
    

    3,json文件

    JSON跟Python中的字典其实是一样一样的,事实上JSON的数据类型和Python的数据类型是很容易找到对应关系的,如下面两张表所示。

    JSON Python
    object dict
    array list
    string str
    number (int / real) int / float
    true / false True / False
    null None
    Python JSON
    dict object
    list, tuple array
    str string
    int, float, int- & float-derived Enums number
    True / False true / false
    None null

    我们使用Python中的json模块就可以将字典或列表以JSON格式保存到文件中,代码如下所示。

    import json
    
    
    def main():
        mydict = {
            'name': '骆昊',
            'age': 38,
            'qq': 957658,
            'friends': ['王大锤', '白元芳'],
            'cars': [
                {'brand': 'BYD', 'max_speed': 180},
                {'brand': 'Audi', 'max_speed': 280},
                {'brand': 'Benz', 'max_speed': 320}
            ]
        }
        try:
            with open('data.json', 'w', encoding='utf-8') as fs:
                json.dump(mydict, fs)
        except IOError as e:
            print(e)
        print('保存数据完成!')
    
    
    if __name__ == '__main__':
        main()
    
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 18:12 , Processed in 0.066826 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表