一半君的总结纸

听话只听一半君

#40 如何从文件的完整路径中得到文件名或目录名?

比如下面的这个路径:

string $fullpath = "c:/maya/projects/default/sourceimages/myImage.tif"

我通常用下面的简短的utility procedures 来处理路径,文件名,还有/或者\的问题,他们在 Windows 和 UNIX 下通用.(lz注:现在这些都不需要了,用python吧)

filepart’ script 可以从全路径中得到文件名:

global proc string filepart( string $path )
// 从完整文件路径中得到目录.
// 例如参数是: "D:/projects/default/scenes/myScene.mb"
// 那么结果是: "myScene.mb"
//
// 路径有可能是用
// ("/" 或 "\") 作为分隔符的
{
  string $filepart = match( "[^/\\]*$", $path );

  return $filepart;
}

pathpart’ script 可以从全路径中得到目录名:

proc string pathpart( string $path )
// 从文件完整路径中得到目录部分.
// 比如参数是: "D:/projects/default/scenes/myScene.mb"
// 那返回结果将会是: "D:/projects/default/scenes"
//
// 注意: 需要文件的路径的分隔符是 ("/")
{
  string $dir = match( "^.*/", $path );

  int $sz = size( $dir );
  // 去掉末尾的 '/'
  //
  if ( ( $sz > 1 ) && ( substring( $dir, $sz, $sz ) == "/" ) ) {
    $dir = substring( $dir, 1, ($sz - 1) );
  }
  return $dir;

}

所以,如果想得到文件名:

string $file = filepart( $fullpath );
// Result: myImage.tif //

如果想得到目录名:

string $directory = pathpart( $fullpath );
// Result: c:/maya/projects/default/sourceimages //

加强版:

path = pm.Path(r'c:\abc\def.ma')

path.name
# Result: u'def.ma' #

path.parent
# Result: Path('c:\abc') #
os.path.basename(r'c:\abc\def.ma')
# Result: def.ma #

os.path.dirname(r"c:\abc\def.ma")
# Result: 'c:\\abc' #

Related How-To’s

Thursday, September 07, 2000

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: