Return a tuple of strings (basename, extension) for a path. The basename is the file name minus its extension. Return an empty extension string for a directory.
(path, force_posix=False)
| 263 | |
| 264 | # TODO: FIXME: this is badly broken!!!! |
| 265 | def splitext(path, force_posix=False): |
| 266 | """ |
| 267 | Return a tuple of strings (basename, extension) for a path. The basename is |
| 268 | the file name minus its extension. Return an empty extension string for a |
| 269 | directory. |
| 270 | """ |
| 271 | base_name = "" |
| 272 | extension = "" |
| 273 | if not path: |
| 274 | return base_name, extension |
| 275 | |
| 276 | is_dir = path.endswith( |
| 277 | ( |
| 278 | "\\", |
| 279 | "/", |
| 280 | ) |
| 281 | ) |
| 282 | path = as_posixpath(path).strip("/") |
| 283 | name = resource_name(path, force_posix) |
| 284 | if is_dir: |
| 285 | # directories never have an extension |
| 286 | base_name = name |
| 287 | extension = "" |
| 288 | elif name.startswith(".") and "." not in name[1:]: |
| 289 | # .dot files base name is the full name and they do not have an extension |
| 290 | base_name = name |
| 291 | extension = "" |
| 292 | else: |
| 293 | base_name, extension = posixpath.splitext(name) |
| 294 | # handle composed extensions of tar.gz, tar.bz2, zx,etc |
| 295 | if base_name.endswith(".tar"): |
| 296 | base_name, extension2 = posixpath.splitext(base_name) |
| 297 | extension = extension2 + extension |
| 298 | return base_name, extension |
| 299 | |
| 300 | |
| 301 | # |
no test coverage detected