2016-09-22 91 views
0

我想编写一个程序,该程序需要1.6 GB的.dmg文件并将其分割为100 MB的块。使用Python将磁盘映像分割成更小的部分

我想写另一个程序,以后可以把所有东西都放回去,这样它就可以被安装和使用。

我对Python(以及一般的任何类型的编程语言)都很陌生,在这里找不到关于这个特定事物的任何东西。如果我使用不正确的术语,请告诉我,以便我可以学习如何更有效地进行搜索。

谢谢!

+0

我不明白到底什么是你遇到的问题。你能告诉我们你已有的代码吗?堆栈溢出成员不会为您编写代码。 –

+0

我目前没有任何代码。我主要是在寻找方向,以便我可以自己学习。我绝对不希望有人为我写代码。 – Andy

+0

完全没问题。你有没有试图搜索任何处理DMG文件的Python库? –

回答

0

试试这个例子:

split.py

import sys, os 
kilobytes = 1024 
megabytes = kilobytes * 1000 
chunksize = int(1.4 * megabytes)     

def split(fromfile, todir, chunksize=chunksize): 
    if not os.path.exists(todir): 
     os.mkdir(todir) 
    else: 
     for fname in os.listdir(todir): 
      os.remove(os.path.join(todir, fname)) 
    partnum = 0 
    input = open(fromfile, 'rb') 
    while 1: 
     chunk = input.read(chunksize) 
     if not chunk: break 
     partnum = partnum+1 
     filename = os.path.join(todir, ('part%04d' % partnum)) 
     fileobj = open(filename, 'wb') 
     fileobj.write(chunk) 
     fileobj.close() 
    input.close() 
    assert partnum <= 9999 
    return partnum 

if __name__ == '__main__': 
    try: 
     parts = split('/Users/example/Desktop/SO/st/example.mp4', '/Users/example/Desktop/SO/st/new', 2000000) # 100000000 == 100 mb 
    except: 
     print('Error during split') 

的捧场:

join.py

import os, sys 
readsize = 1024 

def join(fromdir, tofile): 
    output = open(tofile, 'wb') 
    parts = os.listdir(fromdir) 
    parts.sort() 
    for filename in parts: 
     filepath = os.path.join(fromdir, filename) 
     fileobj = open(filepath, 'rb') 
     while 1: 
      filebytes = fileobj.read(readsize) 
      if not filebytes: break 
      output.write(filebytes) 
     fileobj.close() 
    output.close() 

if __name__ == '__main__': 
    try: 
     join('/Users/example/Desktop/SO/st/new', 'example_join.mp4') 
    except: 
     print('Error joining files:') 
    else: 
     print('Join complete!') 
+0

感谢您的示例!正如我所说,我仍然在学习,我只是不知道我不知道什么。我喜欢通过人们发布的例子,了解每件作品的作用,然后重写它,而不用参考以确保我理解它。我会给这一枪! – Andy