Commit de45ca6c876012b5ea8997c38a551e6dbca02eeb
1 parent
2aba81e8
Exists in
master
first commit
Showing
3 changed files
with
144 additions
and
0 deletions
Show diff stats
@@ -0,0 +1,103 @@ | @@ -0,0 +1,103 @@ | ||
1 | +#!/usr/bin/env python | ||
2 | +# -*- coding: utf-8 -*- | ||
3 | +# | ||
4 | +# Copyright (c) IRAP CNRS | ||
5 | +# Odile Coeur-Joly, Toulouse, France | ||
6 | +# | ||
7 | +""" | ||
8 | + | ||
9 | +src.filenames Created on 13 déc. 2017 | ||
10 | +""" | ||
11 | +import os | ||
12 | + | ||
13 | + | ||
14 | +class PireneaFiles(object): | ||
15 | + """ | ||
16 | + Manage the files generated by PIRENEA : renaming, converting | ||
17 | + """ | ||
18 | + | ||
19 | + def __init__(self, folder="D:\PIRENEA\DATA_1"): | ||
20 | + """ | ||
21 | + Constructor. Raises ValueError if input folder does not exist. | ||
22 | + """ | ||
23 | + self.folder = os.path.abspath(folder) | ||
24 | + if not os.path.isdir(self.folder): | ||
25 | + raise ValueError("Not a valid directory") | ||
26 | + if "PIRENEA" not in self.folder.upper() or "DATA" not in self.folder.upper(): | ||
27 | + raise ValueError("Not a valid PIRENEA DATA directory") | ||
28 | + | ||
29 | + def add_prefix(self, prefix="P0"): | ||
30 | + """ | ||
31 | + Search all files recursively and add a prefix to them. | ||
32 | + """ | ||
33 | + self.__check_prefix(prefix) | ||
34 | + prefix += "_" | ||
35 | + for path, _dirs, files in os.walk(self.folder): | ||
36 | + for filename in files: | ||
37 | + new_filename = prefix + filename | ||
38 | + os.rename(os.path.join(path, filename), os.path.join(path, new_filename)) | ||
39 | + | ||
40 | + def remove_prefix(self, prefix="P0"): | ||
41 | + """ | ||
42 | + Search all files recursively and remove their setup prefix. | ||
43 | + """ | ||
44 | + self.__check_prefix(prefix) | ||
45 | + prefix += "_" | ||
46 | + for path, _dirs, files in os.walk(self.folder): | ||
47 | + for filename in files: | ||
48 | + f = filename.split(prefix) | ||
49 | + new_filename = prefix.join(f[1:]) | ||
50 | + os.rename(os.path.join(path, filename), os.path.join(path, new_filename)) | ||
51 | + | ||
52 | + def __check_prefix(self, prefix="P0"): | ||
53 | + """ | ||
54 | + Check if a prefix is valid. | ||
55 | + P0 : PIRENEA files produced with the Villa setup | ||
56 | + P1 : PIRENEA files produced from the IRAP setup | ||
57 | + P2 : PIRENEA files produced from the PILAB setup | ||
58 | + """ | ||
59 | + prefix_list = {"P0", "P1", "P2"} | ||
60 | + if prefix not in prefix_list: | ||
61 | + raise ValueError("Not a valid prefix for a PIRENEA setup : (P0, P1 or P2 only)") | ||
62 | + | ||
63 | + | ||
64 | +class PireneaDir(object): | ||
65 | + """ | ||
66 | + Manage the files generated by PIRENEA : naming, converting | ||
67 | + """ | ||
68 | + | ||
69 | + def __init__(self, folder="", year=2002): | ||
70 | + """ | ||
71 | + Constructor | ||
72 | + """ | ||
73 | + self.folder = folder | ||
74 | + self.year = int(year) | ||
75 | + | ||
76 | + | ||
77 | +if __name__ == '__main__': | ||
78 | + | ||
79 | + """ test within one directory """ | ||
80 | + try: | ||
81 | + root = input("Root directory for Pirenea: ") | ||
82 | + p = PireneaFiles(root) | ||
83 | + print("Working directory is: {0}".format(os.path.abspath(p.folder))) | ||
84 | + | ||
85 | + c = input("Add or Remove a prefix (A/R): ") | ||
86 | + if "A" in c.upper(): | ||
87 | + """ Add a prefix """ | ||
88 | + prefix = input("Choose a prefix to rename files (P0, P1, P2): ") | ||
89 | + print("Your input prefix is: {} ", prefix) | ||
90 | + p.add_prefix(prefix) | ||
91 | + print("... renaming with prefix is DONE !") | ||
92 | + elif "R" in c.upper(): | ||
93 | + """ Remove a prefix """ | ||
94 | + prefix = input("Choose a prefix to remove (P0, P1, P2): ") | ||
95 | + print("Your input prefix is: {} ", prefix) | ||
96 | + p.remove_prefix(prefix) | ||
97 | + print("... removing the prefix is DONE !") | ||
98 | + | ||
99 | + except ValueError as err: | ||
100 | + print("Error: {0}".format(err)) | ||
101 | + | ||
102 | +else: | ||
103 | + print("\nImporting... ", __name__) |
@@ -0,0 +1,41 @@ | @@ -0,0 +1,41 @@ | ||
1 | +#!/usr/bin/env python | ||
2 | +# -*- coding: utf-8 -*- | ||
3 | +# | ||
4 | +# Copyright (c) IRAP CNRS | ||
5 | +# Odile Coeur-Joly, Toulouse, France | ||
6 | +# | ||
7 | +""" | ||
8 | + | ||
9 | +tests.test_files Created on 18 dec. 2017 | ||
10 | +""" | ||
11 | + | ||
12 | +import unittest | ||
13 | + | ||
14 | +from src.files import PireneaFiles | ||
15 | + | ||
16 | + | ||
17 | +class PireneaFilesTestCase(unittest.TestCase): | ||
18 | + | ||
19 | + def setUp(self): | ||
20 | + """Call before every test case.""" | ||
21 | + self.pirenea = PireneaFiles() | ||
22 | + self.folder = "D:/PIRENEA/DATA_1" | ||
23 | + self.bad_folder = "c:/documents" | ||
24 | + self.empty = "" | ||
25 | + | ||
26 | + def test_add_prefix(self): | ||
27 | + with self.assertRaises(ValueError): | ||
28 | + self.pirenea.__init__(self.bad_folder) | ||
29 | + with self.assertRaises(ValueError): | ||
30 | + self.pirenea.__init__(self.empty) | ||
31 | + with self.assertRaises(ValueError): | ||
32 | + self.pirenea.__init__(self.folder) | ||
33 | + self.pirenea.add_prefix("PO") | ||
34 | + | ||
35 | + def test_remove_prefix(self): | ||
36 | + with self.assertRaises(ValueError): | ||
37 | + self.pirenea.__init__(self.folder) | ||
38 | + self.pirenea.remove_prefix(self.empty) | ||
39 | + | ||
40 | +if __name__ == "__main__": | ||
41 | + unittest.main() |