Blender.sys.splitext() raises an error if the path is longer then 80 chars. seems a bit short, noted this anyhow end added an example. (hope its okay to do small doc corrections as I notice them.)
168 lines
4.6 KiB
Python
168 lines
4.6 KiB
Python
# Blender.sys module
|
|
|
|
"""
|
|
The Blender.sys submodule.
|
|
|
|
sys
|
|
===
|
|
|
|
B{New}: L{expandpath}.
|
|
|
|
This module provides a minimal set of helper functions and data. Its purpose
|
|
is to avoid the need for the standard Python module 'os', in special 'os.path',
|
|
though it is only meant for the simplest cases.
|
|
|
|
Example::
|
|
|
|
import Blender
|
|
|
|
filename = ""
|
|
def f(name): # file selector callback
|
|
global filename
|
|
filename = name
|
|
|
|
Blender.Window.FileSelector(f)
|
|
|
|
if filename:
|
|
print 'basename:', Blender.sys.basename(filename)
|
|
print 'dirname:', Blender.sys.dirname(filename)
|
|
print 'splitext:', Blender.sys.splitext(filename)
|
|
|
|
# what would basename(splitext(filename)[0]) print?
|
|
|
|
@type sep: char
|
|
@var sep: the platform-specific dir separator for this Blender: '/'
|
|
everywhere, except on Win systems, that use '\\'.
|
|
@type dirsep: char
|
|
@var dirsep: same as L{sep}.
|
|
@type progname: string
|
|
@var progname: the Blender executable (argv[0]).
|
|
|
|
@attention: The module is called sys, not Sys.
|
|
"""
|
|
|
|
def basename (path):
|
|
"""
|
|
Get the base name (filename stripped from dir info) of 'path'.
|
|
@type path: string
|
|
@param path: a path name
|
|
@rtype: string
|
|
@return: the base name
|
|
"""
|
|
|
|
def dirname (path):
|
|
"""
|
|
Get the dir name (dir path stripped from filename) of 'path'.
|
|
@type path: string
|
|
@param path: a path name
|
|
@rtype: string
|
|
@return: the dir name
|
|
"""
|
|
|
|
def join (dir, file):
|
|
"""
|
|
Join the given dir and file paths, using the proper separator for each
|
|
platform.
|
|
@type dir: string
|
|
@type file: string
|
|
@param dir: the dir name, like returned from L{dirname}.
|
|
@param file: the bare filename, like returned from L{basename}.
|
|
@rtype: string
|
|
@return: the resulting filename.
|
|
@warn: this simple function isn't intended to be a complete replacement for
|
|
the standard os.path.join() one, which handles more general cases.
|
|
"""
|
|
|
|
def splitext (path):
|
|
"""
|
|
Split 'path' into (root, ext), where 'ext' is a file extension including the full stop.
|
|
|
|
Example::
|
|
|
|
import Blender
|
|
file, ext= Blender.sys.splitext('/tmp/foobar.blend')
|
|
print file, ext
|
|
# ('/tmp/foobar', '.blend')
|
|
|
|
@type path: string
|
|
@param path: a path name
|
|
@rtype: tuple of two strings
|
|
@return: (root, ext)
|
|
@note: This function will raise an error if the path is longer then 80 characters.
|
|
"""
|
|
|
|
def makename (path = "Blender.Get('filename')", ext = "", strip = 0):
|
|
"""
|
|
Remove extension from 'path', append extension 'ext' (if given)
|
|
to the result and return it. If 'strip' is non-zero, also remove
|
|
dirname from path.
|
|
|
|
Example::
|
|
import Blender
|
|
from Blender.sys import *
|
|
print makename('/path/to/myfile.txt','.abc', 1) # returns 'myfile.abc'
|
|
|
|
print makename('/path/to/myfile.obj', '-01.obj') # '/path/to/myfile-01.obj'
|
|
|
|
print makename('/path/to/myfile.txt', strip = 1) # 'myfile'
|
|
|
|
# note that:
|
|
print makename(ext = '.txt')
|
|
# is equivalent to:
|
|
print sys.splitext(Blender.Get('filename'))[0]) + '.txt'
|
|
|
|
@type path: string
|
|
@param path: a path name or Blender.Get('filename'), if not given.
|
|
@type ext: string
|
|
@param ext: an extension to append. For flexibility, a dot ('.') is
|
|
not automatically included.
|
|
@rtype: string
|
|
@return: the resulting string
|
|
"""
|
|
|
|
def exists(path):
|
|
"""
|
|
Tell if the given pathname (file or dir) exists.
|
|
@rtype: int
|
|
@return:
|
|
- 0: path does not exist;
|
|
- 1: path is an existing filename;
|
|
- 2: path is an existing dirname;
|
|
- -1: path exists but is neither a regular file nor a dir.
|
|
"""
|
|
|
|
def time ():
|
|
"""
|
|
Get the current time in seconds since a fixed value. Successive calls to
|
|
this function are guaranteed to return values greater than the previous call.
|
|
@rtype: float
|
|
@return: the elapsed time in seconds.
|
|
"""
|
|
|
|
def sleep (millisecs = 10):
|
|
"""
|
|
Sleep for the specified amount of time.
|
|
@type millisecs: int
|
|
@param millisecs: the amount of time in milliseconds to sleep. The default
|
|
is 10 which is 0.1 seconds.
|
|
"""
|
|
|
|
def expandpath (path):
|
|
"""
|
|
Expand the given Blender 'path' into an absolute and valid path.
|
|
Internally, Blender recognizes two special character sequences in paths:
|
|
- '//' (used at the beginning): means base path -- the current .blend file's
|
|
dir;
|
|
- '#' (used at the end): means current frame number.
|
|
The expanded string can be passed to generic python functions that don't
|
|
understand Blender's internal relative paths.
|
|
@note: this function is also useful for obtaining the name of the image
|
|
that will be saved when rendered.
|
|
@note: if the passed string doesn't contain the special characters it is
|
|
returned unchanged.
|
|
@type path: string
|
|
@param path: a path name.
|
|
@rtype: string
|
|
@return: the expanded (if necessary) path.
|
|
"""
|