2016-11-28 101 views
0

我有一个名为dllName的变量,用于获取已执行的dll的名称。有时这个dll以"kernel32.dll"的格式返回,有时以"C:\Windows\system32\kernel32.dll"的格式返回。如何删除最后的所有字符

路径可能会有所不同,我试图实现的是剥离"C:\Windows\system32\"

编辑:Extract file name from path, no matter what the os/path format

我的问题是不一样的,因为这问题,因为os.path.basename和os.path.split这样不会在这种情况下工作。

对于os.path.split头是空的,尾部包含整个路径?

+1

不需要正则表达式,只需使用['os.path.basename'](https://docs.python.org/2.7/library/os.path.html#os.path.basename) –

+0

你能告诉我们你试过的那个不行,或者你有困难?如果你还没有尝试过任何代码,你可以使用stackoverflow上的搜索功能? –

+0

@Rawing:'os.path.basename'不适用于Linux上的Windows路径。 –

回答

1

你可以使用:

path = 'C:\\Windows\\system32\\kernel32.dll' 
print path.split('\\')[-1] 
#=> kernel32.dll 

import os.path 
print os.path.basename(path) 

import re 

def extract_basename(path): 
    """Extracts basename of a given path. Should Work with any OS Path on any OS""" 
    basename = re.search(r'[^\\/]+(?=[\\/]?$)', path) 
    if basename: 
    return basename.group(0) 

print extract_basename(path) 

最后这个例子应该对任何操作系统,任何工作路径。

Here是一些测试。

+0

选项1起作用,选项2不起作用。感谢您的帮助! – dperrie

+0

选项2不适用于Linux上的Windows路径。选项3应适用于任何操作系统上的任何路径。 –

相关问题