2016-09-22 3 views
0

Я хотел бы написать программу, которая принимает файл .dmg, который составляет 1,6 ГБ, и разделить его на куски 100 МБ.делить образ диска на более мелкие части с помощью Python

Я хотел бы также написать еще одну программу, которая позже может собрать все вместе, чтобы можно было установить и использовать.

Я очень новичок в Python (и вообще любом языке программирования вообще) и ничего не могу найти здесь об этой конкретной вещи. Дайте мне знать, если я использую неправильную терминологию, чтобы я мог научиться более эффективному поиску.

Спасибо!

+0

Я не понимаю, что именно это проблемы у вас есть. Можете ли вы показать нам код, который у вас уже есть? Элементы переполнения стека не будут писать код для вас. –

+0

У меня сейчас нет кода. Я в основном ищу направление, чтобы я мог научиться делать это сам. Я определенно не хочу, чтобы кто-то написал код для меня. – Andy

+0

Нет проблем. Вы пытались найти любую библиотеку python, которая обрабатывает файлы DMG? –

ответ

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