残存的影子 2022-05-01 14:57 采纳率: 57.9%
浏览 143
已结题

请问Python有办法同时读写文件么?

比如说,我这里有个100g的文件(电脑内存不足100g)我想用字节形式打开。然后给最前面十个16进制每个加一。然后再把这个100g的文件输出。现在的问题是我必须读取一段,然后再输出一段,效率太低。有没有别的什么办法可以让读取和输出同时进行?实现近似甚至超过复制粘贴的速度。

img


初步思路是这样,但是还有很多问题,比如如何继续读取第二个1024而不是第一个,old的序号等。
或者用别的什么自动内存管理

  • 写回答

2条回答 默认 最新

  • TheRainDay 2022-05-01 18:43
    关注

    双线程进行呗,一个读一个写,弄个list进行缓存数据

    import threading, time
    readnow = []
    STOP = False
    def out(): #写入函数
       global STOP
       while not STOP:
          if not len(readnow):
             data = readnow.pop(0)
             #处理然后写入数据
          else:
             time.sleep(0.01) #防止高cpu占用
    def in_(): #读取函数
      with open("file", 'rb') as f:
        while not STOP:
            data = f.read(1024)
            if data == b'': #读完了
                return
            readnow.append(data) if len(readnow) >= xxx else None #1024b一个块,当list内数据大于多少组的时候停止读取等待out线程输出完毕
            time.sleep(0.01)
            
    
    threading.Thread(target=out).start()
    threading.Thread(target=in_).start()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
  • 关注

    Python 实现大文件读写,可以参考这个:
    https://blog.csdn.net/qq_19394437/article/details/115557212

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 修改了问题 5月1日
  • 修改了问题 5月1日
  • 展开全部

悬赏问题

  • ¥15 请教一下simulink中S函数相关问题
  • ¥15 Hadoop中eclipse运行问题
  • ¥15 在二层网络中,掩码存在包含关系即可通信
  • ¥15 端口转发器解析失败不知道电脑设置了啥
  • ¥15 Latex算法流程图行号自定义
  • ¥15 关于#python#的问题:我在自己的电脑上运行起来总是报错,希望能给我一个详细的教程,(开发工具-github)
  • ¥40 基于51单片机实现球赛计分器功能
  • ¥15 cs2游戏画面卡住,应用程序sid与指挥者sid不匹配
  • ¥15 实验七:Pandas要有实验截图和代码
  • ¥15 TypeError: Make sure that the iterable only contains strings.