splitFile2SmallFile

 1 """
 2 this is aa customizable version of the standard unix split command-line
 3 utility;because it is written in python,it also works on windows and can be
 4 easily modifyed;because it export a function,its logic can also be imported
 5 and resued in other applications
 6 """
 7 import sys,os
 8 kilobytes =1024
 9 megabytes = kilobytes*1000
10 chunksize = int(1.4* megabytes)                  #default roughtly a floppy
11
12 def split(fromfile,todir,chunksize=chunksize):
13     if not os.path.exists(todir):                 # caller handlers errors
14         os.mkdir(todir)                          #make dir,read/write parts
15     else:
16         for fname in os.listdir(todir):
17             os.remove(os.path.join(todir,fname))  #delete any exiting files
18     partnum =0
19     input = open(fromfile,‘rb‘)
20     while True:
21         chunk = input.read(chunksize)
22         if not chunk:break
23         partnum +=1
24         filename = os.path.join(todir,(‘part%04d‘ % partnum))
25         fileobj = open(filename,‘wb‘)
26         fileobj.write(chunk)
27         fileobj.close()
28     input.close()
29     assert partnum<=9999
30     return partnum
31
32 if __name__ ==‘__main__‘:
33     if len(sys.argv) == 2 and sys.argv[1]== ‘-help‘:
34         print(‘use:split.py [file to split target-dir [chunksize]]‘)
35     else:
36         if len(sys.argv) <3:
37             interactive =True
38             fromfile =input(‘File to be split?‘)
39             todir = input(‘directory to store part files?‘)
40         else:
41             interactive = False
42             fromfile,todir = sys.argv[1:3]
43             if len(sys.argv) == 4:chunksize =int(sys.argv[3])
44         absfrom,absto = map(os.path.abspath,[fromfile,todir])
45         print(‘splitting‘,absfrom,‘to‘,absto,‘by‘,chunksize)
46         try:
47             parts = split(fromfile,todir,chunksize)
48         except:
49             print(‘error during split:‘)
50             print(sys.exc_info()[0],sys.exc_info()[1])
51         else:
52             print(‘split finished:‘,parts,‘parts are in ‘,absto)
53         if interactive:
54             input(‘press enter key‘)  #pause if clicked
55             

split to 200k

时间: 2024-10-17 16:31:41

splitFile2SmallFile的相关文章