残存的影子 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()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果