Module pl.path

Path manipulation and file queries.

This is modelled after Python's os.path library (10.1); see the Guide.

NOTE: the functions assume the paths being dealt with to originate from the OS the application is running on. Windows drive letters are not to be used when running on a Unix system for example. The one exception is Windows paths to allow both forward and backward slashes (since Lua also accepts those)

Dependencies: pl.utils, lfs

Functions

dir () Lua iterator over the entries of a given directory.
mkdir () Creates a directory.
rmdir () Removes a directory.
attrib () Gets attributes.
currentdir () Get the working directory.
link_attrib () Gets symlink attributes.
chdir () Changes the working directory.
isdir (P) is this a directory?
isfile (P) is this a file?
getsize (P) return size of a file.
exists (P) does a path exist?
getatime (P) Return the time of last access as the number of seconds since the epoch.
getmtime (P) Return the time of last modification as the number of seconds since the epoch.
getctime (P) Return the system's ctime as the number of seconds since the epoch.
splitpath (P) given a path, return the directory part and a file part.
abspath (P[, pwd]) return an absolute path.
splitext (P) given a path, return the root part and the extension part.
dirname (P) return the directory part of a path
basename (P) return the file part of a path
extension (P) get the extension part of a path.
isabs (P) is this an absolute path?
join (p1, p2, ...) return the path resulting from combining the individual paths.
normcase (P) normalize the case of a pathname.
normpath (P) normalize a path name.
relpath (P[, start]) relative path from current directory or optional start point
expanduser (P) Replace a starting '~' with the user's home directory.
tmpname () Return a suitable full path to a new temporary file name.
common_prefix (path1, path2) return the largest common prefix path of two paths.
package_path (mod) return the full path where a particular Lua module would be found.

Fields

is_windows are we running Windows?
sep path separator for this platform.
dirsep separator for PATH for this platform


Functions

dir ()
Lua iterator over the entries of a given directory. Implicit link to luafilesystem.dir
mkdir ()
Creates a directory. Implicit link to luafilesystem.mkdir
rmdir ()
Removes a directory. Implicit link to luafilesystem.rmdir
attrib ()
Gets attributes. Implicit link to luafilesystem.attributes
currentdir ()
Get the working directory. Implicit link to luafilesystem.currentdir
link_attrib ()
Gets symlink attributes. Implicit link to luafilesystem.symlinkattributes
chdir ()
Changes the working directory. On Windows, if a drive is specified, it also changes the current drive. If only specifying the drive, it will only switch drive, but not modify the path. Implicit link to luafilesystem.chdir
isdir (P)
is this a directory?

Parameters:

isfile (P)
is this a file?

Parameters:

getsize (P)
return size of a file.

Parameters:

exists (P)
does a path exist?

Parameters:

Returns:

    the file path if it exists (either as file, directory, socket, etc), nil otherwise
getatime (P)
Return the time of last access as the number of seconds since the epoch.

Parameters:

getmtime (P)
Return the time of last modification as the number of seconds since the epoch.

Parameters:

getctime (P)
Return the system's ctime as the number of seconds since the epoch.

Parameters:

splitpath (P)
given a path, return the directory part and a file part. if there's no directory part, the first value will be empty

Parameters:

Returns:

  1. directory part
  2. file part

Usage:

    local dir, file = path.splitpath("some/dir/myfile.txt")
    assert(dir == "some/dir")
    assert(file == "myfile.txt")
    
    local dir, file = path.splitpath("some/dir/")
    assert(dir == "some/dir")
    assert(file == "")
    
    local dir, file = path.splitpath("some_dir")
    assert(dir == "")
    assert(file == "some_dir")
abspath (P[, pwd])
return an absolute path.

Parameters:

  • P string A file path
  • pwd string optional start path to use (default is current dir) (optional)
splitext (P)
given a path, return the root part and the extension part. if there's no extension part, the second value will be empty

Parameters:

Returns:

  1. string root part (everything upto the "."", maybe empty)
  2. string extension part (including the ".", maybe empty)

Usage:

    local file_path, ext = path.splitext("/bonzo/dog_stuff/cat.txt")
    assert(file_path == "/bonzo/dog_stuff/cat")
    assert(ext == ".txt")
    
    local file_path, ext = path.splitext("")
    assert(file_path == "")
    assert(ext == "")
dirname (P)
return the directory part of a path

Parameters:

Returns:

    string everything before the last dir-separator

See also:

Usage:

    path.dirname("/some/path/file.txt")   -- "/some/path"
    path.dirname("file.txt")              -- "" (empty string)
basename (P)
return the file part of a path

Parameters:

Returns:

    string

See also:

Usage:

    path.basename("/some/path/file.txt")  -- "file.txt"
    path.basename("/some/path/file/")     -- "" (empty string)
extension (P)
get the extension part of a path.

Parameters:

Returns:

    string

See also:

Usage:

    path.extension("/some/path/file.txt") -- ".txt"
    path.extension("/some/path/file_txt") -- "" (empty string)
isabs (P)
is this an absolute path?

Parameters:

Usage:

    path.isabs("hello/path")    -- false
    path.isabs("/hello/path")   -- true
    -- Windows;
    path.isabs("hello\path")    -- false
    path.isabs("\hello\path")   -- true
    path.isabs("C:\hello\path") -- true
    path.isabs("C:hello\path")  -- false
join (p1, p2, ...)
return the path resulting from combining the individual paths. if the second (or later) path is absolute, we return the last absolute path (joined with any non-absolute paths following). empty elements (except the last) will be ignored.

Parameters:

Returns:

    string the combined path

Usage:

    path.join("/first","second","third")   -- "/first/second/third"
    path.join("first","second/third")      -- "first/second/third"
    path.join("/first","/second","third")  -- "/second/third"
normcase (P)

normalize the case of a pathname. On Unix, this returns the path unchanged, for Windows it converts;

  • the path to lowercase
  • forward slashes to backward slashes

Parameters:

Usage:

    path.normcase("/Some/Path/File.txt")
    -- Windows: "\some\path\file.txt"
    -- Others : "/Some/Path/File.txt"
normpath (P)
normalize a path name. A//B, A/./B, and A/foo/../B all become A/B.

An empty path results in '.'.

Parameters:

relpath (P[, start])
relative path from current directory or optional start point

Parameters:

  • P string a path
  • start string optional start point (default current directory) (optional)
expanduser (P)
Replace a starting '~' with the user's home directory. In windows, if HOME isn't set, then USERPROFILE is used in preference to HOMEDRIVE HOMEPATH. This is guaranteed to be writeable on all versions of Windows.

Parameters:

Returns:

    string The file path with the ~ prefix substituted, or the input path if it had no prefix.

Or

  1. nil
  2. string Error message if the environment variables were unavailable.
tmpname ()
Return a suitable full path to a new temporary file name. unlike os.tmpname(), it always gives you a writeable path (uses TEMP environment variable on Windows)
common_prefix (path1, path2)
return the largest common prefix path of two paths.

Parameters:

Returns:

    the common prefix (Windows: separators will be normalized, casing will be original)
package_path (mod)
return the full path where a particular Lua module would be found. Both package.path and package.cpath is searched, so the result may either be a Lua file or a shared library.

Parameters:

  • mod string name of the module

Returns:

  1. on success: path of module, lua or binary
  2. on error: nil, error string listing paths tried

Fields

is_windows
are we running Windows?
sep
path separator for this platform.
dirsep
separator for PATH for this platform
generated by LDoc 1.5.0