残存的影子 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日
  • 展开全部

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面