Exemplo n.º 1
0
def __FileAttributes(fullpath):
    "Returns a string describing a file's attributes."
    attr = File.GetAttributes(fullpath)
    if (attr == FileAttributes.Normal):
        return "Normal"
    rc = ""
    if (attr & FileAttributes.Directory): rc += "Directory "
    if (attr & FileAttributes.ReadOnly): rc += "Read Only "
    if (attr & FileAttributes.Hidden): rc += "Hidden "
    if (attr & FileAttributes.System): rc += "System "
    if (attr & FileAttributes.Archive): rc += "Archive "
    if (attr & FileAttributes.Compressed): rc += "Compressed "
    return rc
deep = IN[2]

# instantiate error log
error_log = None

files = []
try:
    # determine if deepsearch from current directory is needed
    if deep:
        docs = Directory.GetFiles(folders, search, SearchOption.AllDirectories)
    else:
        docs = Directory.GetFiles(folders, search)

    # get only docs that are not read-only and hidden (and thereby system etc.)
    ro = FileAttributes.ReadOnly
    hi = FileAttributes.Hidden

    for doc in docs:
        if File.GetAttributes(doc).HasFlag(ro) == 0:
            if File.GetAttributes(doc).HasFlag(hi) == 0:
                files.append(Path.GetFullPath(doc))
        else:
            error_log = 'File(s) are read only, correct input!'
except BaseException:
    error_log = 'Directory does not exist, correct input!'

# return assigned the OUT port
if error_log:
    files = error_log
OUT = files