~yacinechaouche/+junk/BZR

« back to all changes in this revision

Viewing changes to PROG/DDD/ddd.py.back

  • Committer: yacinechaouche at yahoo
  • Date: 2015-01-14 22:23:03 UTC
  • Revision ID: yacinechaouche@yahoo.com-20150114222303-6gbtqqxii717vyka
Ajout de CODE et PROD. Il faudra ensuite ajouter ce qu'il y avait dan TMP

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import subprocess
 
2
import dircache
 
3
import sys
 
4
import os
 
5
 
 
6
class DDD:
 
7
    def __init__(self,src_folder,dst_folder):
 
8
        self.src_folder = src_folder
 
9
        self.dst_folder = dst_folder
 
10
    
 
11
    def run(self):
 
12
        dest_dir        = os.path.basename(self.src_folder.rstrip("/"))
 
13
        self.dst_folder = os.path.join(self.dst_folder,dest_dir)
 
14
        os.mkdir(self.dst_folder)
 
15
        self.dd(self.src_folder,self.dst_folder)
 
16
 
 
17
    def dd_file(self,src_file):
 
18
        path = src_file.split(self.src_folder)[1]
 
19
        path = path.startswith("/") and path[1:] or path        
 
20
        dst_file = os.path.join(self.dst_folder,path)
 
21
        subprocess.call(["dd","conv=noerror","if="+src_file,"of="+dst_file])
 
22
        
 
23
    def dd(self,src_folder,dst_folder):
 
24
        in_files = dircache.listdir(src_folder)
 
25
        for src_file in in_files:
 
26
            full_path = os.path.join(src_folder,src_file)
 
27
            if os.path.isdir(full_path):
 
28
                dest_path = os.path.join(dst_folder,full_path.split(self.src_folder)[1])
 
29
                os.mkdir(dest_path)
 
30
                self.dd(full_path,dest_path)
 
31
            else:
 
32
                self.dd_file(full_path)
 
33
    
 
34
def usage():
 
35
    print "usage : %s source_dir dest_dir" % sys.argv[0]    
 
36
 
 
37
def main():
 
38
    if len(sys.argv) != 3 :
 
39
        usage()
 
40
        
 
41
    for special in ('.','..'):
 
42
        for i in xrange(1,len(sys.argv)):
 
43
            if sys.argv[i] == special :
 
44
                sys.argv[i] = os.path.abspath(special)
 
45
 
 
46
    src = sys.argv[1]
 
47
    dst = sys.argv[2]
 
48
 
 
49
    if not all(os.path.isdir(x) for x in (src,dst)):
 
50
        print "one of the arguments is not a directory"
 
51
        usage()
 
52
        exit(2)
 
53
        
 
54
    DDD(src,dst).run()
 
55
    print "success."
 
56
 
 
57
if __name__ == "__main__":
 
58
    main()
 
59