合并文件(Python)

 1 # coding:utf-8
 2 
 3 import sys, os
 4 
 5 def showInfo():
 6     print """
 7     命令格式:mergefile -i srcfile1 srcfile2 ... -o dstfile
 8     说明:-i 选项用于指定多个文件或一个文件夹,程序会按照指定的顺序所有的文件及文件夹中的文件进行合并.
 9           -o 选项用于指定合并后的目标文件."""
10     
11     
12 def mergeFiles(files, dstfilename):
13     bufCount = 1024 * 1024
14     dstfile = open(dstfilename, 'wb')
15     
16     for file in files:
17         srcfile = open(file, 'rb')
18         
19         # 复制文件
20         data = srcfile.read(bufCount)
21         while '' != data:
22             dstfile.write(data)
23             data = srcfile.read(bufCount)
24         
25         srcfile.close()
26         
27     dstfile.close()
28     
29 
30 if '__main__' == __name__:
31     
32     if sys.argv.count('-i') == 0 or sys.argv.count('-o') == 0:
33         print "参数错误"
34         showInfo()
35         exit(1)
36     
37     cmds = ['-i''-o']
38     filenames = []
39     dstfile = ''
40     
41     i = 1
42     while i < len(sys.argv):
43         cmd = sys.argv[i]
44         i += 1
45         
46         if 0 == cmds.count(cmd):
47             print cmd
48             print "参数错误啊"
49             showInfo()
50             exit(1)
51         else:
52             if cmd == '-i':
53                 j = i
54                 while j < len(sys.argv):
55                     arg = sys.argv[j]
56                     j += 1
57                     
58                     if 0 != cmds.count(arg):
59                         i = j - 1
60                         break
61                     
62                     if not os.path.exists(arg):
63                         print '文件“', arg, '"不存在'
64                         showInfo()
65                         exit(2)
66                     else:
67                         if os.path.isfile(arg):
68                             filenames.append(arg)
69                         else:
70                             dirfiles = os.listdir(arg)
71                             for dfn in dirfiles:
72                                 fn = os.path.join(arg, dfn)
73                                 if os.path.isfile(fn):
74                                     filenames.append(fn)
75             elif cmd == '-o':
76                 dstfile = sys.argv[i]
77                 i += 1
78                 if os.path.exists(cmd):
79                     if os.path.isfile(cmd):
80                         os.remove(cmd)
81                     else:
82                         print "参数错误:-o 后面应跟文件名"
83                         showInfo()
84                         exit(1)
85     
86     print "srcfiles:"
87     for fn in filenames:
88         print '  ', fn
89     
90     print 'dstfile:\n  ', dstfile
91     
92     mergeFiles(filenames, dstfile)
93     print '合并成功'
原文地址:https://www.cnblogs.com/hdtianfu/p/2223145.html