|
|
|
@ -42,6 +42,13 @@ def file_exists_nonempty(path): |
|
|
|
|
nonzero size.""" |
|
|
|
|
return os.path.isfile(path) and os.stat(path).st_size > 0 |
|
|
|
|
|
|
|
|
|
def is_executable_file(path): |
|
|
|
|
"""Determines whether a file exists and is executable. |
|
|
|
|
This implements the "-x" action of the shell's test command. |
|
|
|
|
""" |
|
|
|
|
# Ref: http://stackoverflow.com/questions/377017/test-if-executable-exists-in-python |
|
|
|
|
return os.path.isfile(path) and os.access(path, os.X_OK) |
|
|
|
|
|
|
|
|
|
def provide_link(dest, src): |
|
|
|
|
"""Checks if file `dest' exists. If it does not, provide for it by means |
|
|
|
|
of a softlink from `src'.""" |
|
|
|
@ -78,6 +85,12 @@ def relpath(p1, p2): |
|
|
|
|
|
|
|
|
|
# /// end code snippet |
|
|
|
|
|
|
|
|
|
def path_split_all(p): |
|
|
|
|
"""Completely decompose a filename path into individual components |
|
|
|
|
that can be rejoined later. |
|
|
|
|
""" |
|
|
|
|
return _pathsplit(p) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Globbing utilities: |
|
|
|
|
|
|
|
|
|