forked from rsanchezgarc/BIPSPI
-
Notifications
You must be signed in to change notification settings - Fork 3
/
utils.py
93 lines (84 loc) · 2.6 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import sys, os, shutil
from subprocess import call
import requests
import re
from bigExceptions import NoAvailableForDownloadPDB
def myMakeDir(dirPath, pathTail=None):
'''
Equivalent to os.path.join but if the resultant path does not exists, then it is created as a directory.
@param dirPath: str. prefix of the path.
@param pathTail: str. tail of the path. Optional
@return the result of path concatenate dirPath and pathTail (which will be a directory)
'''
if pathTail != None:
dirPath= os.path.join(dirPath, pathTail)
if not os.path.isdir(dirPath):
try:
os.makedirs(dirPath)
except OSError as e:
if e.errno== 17: # Directory already exists
pass
return dirPath
def myMakeDirUnique(dirPath, pathTail=None):
'''
Equivalent to os.path.join but if the resultant path exists, it adds a suffix
of form _#Nun
P.e.
myMakeDirUnique("/hola/path", "foo")
will create dir "/hola/path/foo"
If executed again, myMakeDirUnique("/hola/path", "foo")
will create dir "/hola/path/foo_1"
If executed again, myMakeDirUnique("/hola/path", "foo")
will create dir "/hola/path/foo_2"
and so on
and will return the new name
@param dirPath: str. prefix of the path.
@param pathTail: str. tail of the path. Optional
@return the result of path concatenation of dirPath and pathTail
'''
if pathTail != None:
if pathTail.endswith("/"):
pathTail= pathTail[:-1]
dirPath= os.path.join(dirPath, pathTail)
origDirPath= dirPath
i=1
if os.path.isdir(origDirPath):
dirPath= origDirPath+"_"+str(i)
i+=1
else:
os.makedirs(dirPath)
return dirPath
while os.path.isdir(dirPath):
dirPath= origDirPath+"_"+str(i)
i+=1
os.makedirs(dirPath)
return dirPath
def tryToRemove( fname):
'''
Try to remove one file. If it is not possible, it does not do anything.
@param fname: str. file to be removed
'''
try:
os.remove( fname)
except OSError:
pass
def tryToCopy( source, dest):
'''
Try to copy source file to dest file. If it is not possible, it does not do anything.
@param source: str. path to source file
@param dest: str. path where source will be copied
'''
try:
shutil.copyfile( source, dest)
except IOError:
pass
def tryToSymlink( source, dest):
'''
Try to copy source file to dest file. If it is not possible, it does not do anything.
@param source: str. path to source file
@param dest: str. path where source will be copied
'''
try:
os.symlink( source, dest)
except (IOError, OSError):
pass