[問題] 獲取.py檔路徑的方法差異(1000p)
請問一下,下面這兩種獲取當前路徑的寫法
PATH_1 = os.getcwd().replace('\\','/')+'/log'
PATH_2 = './log'
這兩個path的差別是?
詳細請看我下面的過程,謝謝!
------------------------------------------------
假設我現在有某個test.py檔,路徑為【C:/user/Desktop/folder/test.py】
而folder內除了有test.py,裡面還有一個叫作log的資料夾
即 folder ─┬→ test.py
│
└→ log
而test.py裡面內容為:
import os
import numpy as np
PATH_1 = os.getcwd().replace('\\','/')+'/log'
PATH_2 = './log'
arr = np.zeros(3)
np.save(PATH_1+"/1.npy", arr)
np.save(PATH_2+"/2.npy", arr)
則運行後會發現:
(1) print(PATH_1) 顯示為 C:/user/Desktop/folder/log
print(PATH_2) 顯示為 ./log
(2) log資料夾中確實有 1.npy 與 2.npy這個檔案
由(1),(2)可知,即便字串是不同的,但是code運行到np.save時,看到"./"會自動改成
當前路徑,並非只是字串的"./"
是否可以推論,要不要把"./"看成當前路徑而不是字串的"./",單純看該package的設定?
-------------------------------------------------------------------------
會這麼問是因為我有一份code在運行時
os.makedirs(PATH)
shutil.rmtree(PATH)
np.savetxt(PATH,file)
plt.imsave(PATH,file)
以上這四個對於我PATH是寫PATH_1形式或是PATH_2形式都是一樣且成功的
但是!
embedding.metadata_path = PATH
embedding.sprite.image_path = PATH
summary_writer = tf.summary.FileWriter(PATH)
上面這三個跟tensorboard(tensorflow的工具)有關的指令
PATH 是 PATH_1形式的話 → 運行成功
PATH 是 PATH_2形式的話 → 運行失敗
也因此才會有這篇問題...@@
-------------------------------------------------
文有點多,第一個解惑的板友1000p奉上,感謝!
目前我是猜測原因是tensorflow並沒有把字串"./"翻譯成當前路徑
但是"./"的解釋會根據package不同而不同倒也是蠻奇怪的@@
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.128.169.29
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1525343620.A.0B9.html
→
05/03 20:26,
6年前
, 1F
05/03 20:26, 1F
同時問樓上F大跟樓下S大
"."不是指 .py檔所在路徑 嗎
這還算是《相對路徑》?
因為像是os.getcwd() 不也是get current working directory
同樣都是《獲取module所在位址》
為什麼"."算是相對?
補充:
爬google後,好像"相對"的定義就是沒有"完整位址"
雖然"."是指當前,但是不會有確切位址的字串所以把他歸類在"相對"
推
05/03 21:16,
6年前
, 2F
05/03 21:16, 2F
→
05/03 21:18,
6年前
, 3F
05/03 21:18, 3F
→
05/03 21:18,
6年前
, 4F
05/03 21:18, 4F
→
05/03 21:19,
6年前
, 5F
05/03 21:19, 5F
推
05/03 22:07,
6年前
, 6F
05/03 22:07, 6F
這...上個色而已^^"
推
05/03 23:51,
6年前
, 7F
05/03 23:51, 7F
→
05/03 23:52,
6年前
, 8F
05/03 23:52, 8F
→
05/04 00:42,
6年前
, 9F
05/04 00:42, 9F
→
05/04 00:42,
6年前
, 10F
05/04 00:42, 10F
推
05/04 09:51,
6年前
, 11F
05/04 09:51, 11F
是的 np.save("1.npy", arr) 可以我知道 而且他是相對路徑
但是 np.save("./1.npy", arr) 我會把它認為是 "." + "/1.npy"
而"." = os.getcwd() = 獲取當前位址
但是以字串來說,上面的等式是不相同的
或許應該理解成"1.npy" 跟 "./1.npy"根本就是等價
-------------------------------------------------------------------
關於本問題,目前發現問題出在tensorflow本身的設定
embedding.metadata_path
embedding.sprite.image_path
這兩個的預設路徑並非是跟隨運行當中的.py路徑
所以才會有問題
謝謝以上給建議的板友,每人200p表示謝意回家發,謝謝!
※ 編輯: znmkhxrw (219.87.142.254), 05/04/2018 10:02:30
→
05/04 10:02,
6年前
, 12F
05/04 10:02, 12F
→
05/04 10:04,
6年前
, 13F
05/04 10:04, 13F
→
05/04 10:05,
6年前
, 14F
05/04 10:05, 14F
→
05/04 10:05,
6年前
, 15F
05/04 10:05, 15F
推
05/04 11:24,
6年前
, 16F
05/04 11:24, 16F
推
05/04 13:24,
6年前
, 17F
05/04 13:24, 17F
→
05/04 13:24,
6年前
, 18F
05/04 13:24, 18F