在Windows系统中,如何python脚本实现分割合并大二进制文件,方便上传

在Windows系统中,如何python脚本实现分割合并大二进制文件,方便上传,第1张

你可以看看numpy.fromfile()方法,也可以自己open一个文件,再read()一定字节实现。

前者是把整个原文件读入内存成为数组,再选择数组的一部分写入文件(numpy.tofile())。后者是从原文件中读入一些字节,再把这些字节write到新文件中。

因此,方法并不难,基本上就是一个copy过程。

特别要注意的是,二进制文件是不存储任何格式信息的,所以,一定要弄清楚这个文件是如何产生的,因此,在分割文件时不要把一个数所对应的字节给分开。比如二进制文件中是32bit数据,那么,就要4字节为一个单位,不能在分割时分出一个1字节或2字节来,否则数据就错了。

Option Explicit

'-- 合并文件

'-- 将之前分割出来的 1.mp3 和 2.mp3 合并为 music_new.mp3

Private Sub cmdAddFile_Click()

Dim bytData() As Byte

bytData = ReadFile(App.Path &"\1.mp3")

Call WriteFile(App.Path &"\music_new.mp3", bytData)

bytData = ReadFile(App.Path &"\2.mp3")

Call WriteFile(App.Path &"\music_new.mp3", bytData, , False)

End Sub

'-- 分割文件

'-- 示例将当前目录的 music.mp3 切割为 1.mp3(30000字节) 和 2.mp3(剩余部分)

Private Sub cmdCut_Click()

Dim bytData() As Byte

bytData = ReadFile(App.Path &"\music.mp3", 1, 30000)

Call WriteFile(App.Path &"\1.mp3", bytData)

bytData = ReadFile(App.Path &"\music.mp3", 30001)

Call WriteFile(App.Path &"\2.mp3", bytData)

End Sub

Private Function ReadFile(ByVal strFileName As String, Optional ByVal lngStartPos As Long = 1, Optional ByVal lngFileSize As Long = -1) As Byte()

Dim FilNum As Integer

FilNum = FreeFile

Open strFileName For Binary As #FilNum

If lngFileSize = -1 Then

ReDim ReadFile(LOF(FilNum) - lngStartPos)

Else

ReDim ReadFile(lngFileSize - 1)

End If

Get #FilNum, lngStartPos, ReadFile

Close #FilNum

End Function

Private Function WriteFile(ByVal strFileName As String, bytData() As Byte, Optional ByVal lngStartPos As Long = -1, Optional ByVal OverWrite As Boolean = True)

Dim FilNum As Integer

FilNum = FreeFile

If OverWrite = True And Dir(strFileName) <>"" Then

Kill strFileName

End If

Open strFileName For Binary As #FilNum

If lngStartPos = -1 Then

Put #FilNum, LOF(FilNum) + 1, bytData

Else

Put #FilNum, lngStartPos, bytData

End If

Close #FilNum

End Function

可以使用 powershell 代码:

(get-content -encoding byte '原始文件.txt ')[0][10..50] | set-content -encoding byte '输出文件.txt'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8119298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存