当前位置:网站首页>os.path.join()使用过程中遇到的坑

os.path.join()使用过程中遇到的坑

2022-06-24 06:56:00 go_flush

  • linux 路径的拼接的方式是斜杠/, win 的拼接反斜杠\
  • 我在os.path.join() 使用过程中发现 如果被拼接的路径开头存在斜杠或者反斜杠 拼接路径会从斜杠或者反斜杠处截断(win系统中),如果是linux 系统 则斜杠会截断,反斜杠不会。
  • 代码实例如下:

win 系统

a_path_win = "http://www.baidu.com"
b_path_win = "data/img"
path_join = os.path.join(a_path_win, b_path_win) # 路径的搜索方式是反斜杠\
print(f"sys = {
      sys.platform}")
print(f"path_join_win = {
      path_join}")

打印的结果

sys = win32
path_join_win = http://www.baidu.com\data/img
c_path_win = "/data/img"
path_join_win_1 = os.path.join(a_path_win, c_path_win)
print(f"path_join_win_1 = {path_join_win_1}")

打印的结果

path_join_win_1 = /data/img  # 在斜杠处截断
d_path_win = "\data\img"
path_join_win_2 = os.path.join(a_path_win, d_path_win)
print(f"path_join_win_2 = {
      path_join_win_2}")

打印的结果

path_join_win_2 = \data\img # 在反斜杠处截断

Linux 系统

a_path = "http://www.baidu.com"
b_path = "data/img"
path_join = os.path.join(a_path, b_path)
print(f"{
      sys.platform}")
print(f"path_join = {
      path_join}")

打印的结果

linux
path_join = http://www.baidu.com/data/img
c_path = "/data/img"
path_join_1 = os.path.join(a_path, c_path)
print(f"path_join_1= {
      path_join_1}")

打印的结果

path_join_1= /data/img  # 斜杠同样会截断
d_path = "\data\img"
path_join_2 = os.path.join(a_path, d_path)
print(f"path_join_2 = {
      path_join_2}")

打印的结果

path_join_2 = http://www.baidu.com/\data\img  #反斜杠不会截断,会拼接

FAQ

os.path.join 在win系统下遇到反斜杠和斜杠都在此处截断,在linux 系统下遇到斜杠会截断,反斜杠不会,在拼接路径时一定要把开头处的斜杠或者反斜杠处理掉吗,要不然会出现找不到路径的情况

原网站

版权声明
本文为[go_flush]所创,转载请带上原文链接,感谢
https://floating.blog.csdn.net/article/details/125343046