split filename on name and extenstion in python
本问题已经有最佳答案,请猛点这里访问。
我有这样的模式:
1 2 3 4 | dir1/dir2/.log.gz dir1/dir2/a.log.gz dir1/dir2/a.py dir1/dir2/*.gzip.tar |
我要获取文件名或路径和扩展名。例如:
1 2 3 4 | (name,extension)=(dir1/dir2/,.log.gz) (name,extension)=(dir1/dir2/a,.log.gz) (name,extension)=(dir1/dir2/a,.py) (name,extension)=(dir1/dir2/,.gzip.tar) |
我尝试:
1 | re.findall(r'(.*).*\.?(.*)',path) |
但它不完美
如果只需要文件名和扩展名:
1 2 3 4 5 6 | import os # path = C:/Users/Me/some_file.tar.gz temp = os.path.splitext(path) var = (os.path.basename(temp[0]), temp[1]) print (var) # (some_file.tar, .gz) |
值得注意的是,扩展名为"双重"的文件如果需要的话需要重新出现。例如,
关于这个话题还有更多的内容。
一般策略:找到第一个'。'前面的都是路径,后面的都是扩展。
1 2 3 | def get_path_and_extension(filename): index = filename.find('.') return filename[:index], filename[index + 1:] |