我试图回到Go Lang中存储变量的1级,我怎么能做到这一点?
Origin:"/root/path"Expected:"/root/"
Origin:
"/root/path"
Expected:
"/root/"
有一个功能可以自动完成吗?还是手动操作谢谢.
hivapdat1#
父目录总是可以由..引用,因此您可以将其附加到路径中。举例来说:
..
p := "/root/path/"p = filepath.Clean(filepath.Join(p, ".."))fmt.Println(p)// "/root"
p := "/root/path/"
p = filepath.Clean(filepath.Join(p, ".."))
fmt.Println(p)
// "/root"
如果path本身不是一个目录(或者您确定它不会以路径分隔符结束),那么您可以使用Dir函数来获取包含目录。Dir* 返回path中除了最后一个元素之外的所有元素,通常是path的目录 *:
path
Dir
p := "/root/path"p = filepath.Dir(p)fmt.Println(p)// "/root"
p := "/root/path"
p = filepath.Dir(p)
9rnv2umw2#
import osdef directory_back_levels(path='', steps=0): try: # check type if not isinstance(steps, int) or not isinstance(path, str): return '' # performance return path if steps 0 if steps < 1: return path # loop towrads steps and use os.path.dirname to get the previous directory new_path = path for i in range(steps): new_path = os.path.dirname(new_path) return new_path except Exception as e: print("error in directory_back_levels") raise eExpected = directory_back_levels(path="/root/path", steps=1)print(Expected)notExpected = directory_back_levels(path="/root/static/images/new/image.png", steps=4)print(notExpected)
import os
def directory_back_levels(path='', steps=0):
try:
# check type
if not isinstance(steps, int) or not isinstance(path, str):
return ''
# performance return path if steps 0
if steps < 1:
return path
# loop towrads steps and use os.path.dirname to get the previous directory
new_path = path
for i in range(steps):
new_path = os.path.dirname(new_path)
return new_path
except Exception as e:
print("error in directory_back_levels")
raise e
Expected = directory_back_levels(path="/root/path", steps=1)
print(Expected)
notExpected = directory_back_levels(path="/root/static/images/new/image.png", steps=4)
print(notExpected)
2条答案
按热度按时间hivapdat1#
父目录总是可以由
..
引用,因此您可以将其附加到路径中。举例来说:
如果
path
本身不是一个目录(或者您确定它不会以路径分隔符结束),那么您可以使用Dir
函数来获取包含目录。Dir* 返回path中除了最后一个元素之外的所有元素,通常是path的目录 *:9rnv2umw2#