Python 板


LINE

請問一下,下面這兩種獲取當前路徑的寫法 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://webptt.com/m.aspx?n=bbs/Python/M.1525343620.A.0B9.html
1F:→ FakeGPS: 感覺是目前的位置跑掉了 所以用絕對路徑才能確保無誤 05/03 20:26
同時問樓上F大跟樓下S大 "."不是指 .py檔所在路徑 嗎 這還算是《相對路徑》? 因為像是os.getcwd() 不也是get current working directory 同樣都是《獲取module所在位址》 為什麼"."算是相對? 補充: 爬google後,好像"相對"的定義就是沒有"完整位址" 雖然"."是指當前,但是不會有確切位址的字串所以把他歸類在"相對"
2F:推 Sunal: 養成習慣,都用絕對路徑就沒問題 05/03 21:16
3F:→ Sunal: 路徑的組合不要直接+ 都用os.path.join 05/03 21:18
4F:→ Sunal: 或是py3的pathlib 05/03 21:18
5F:→ Sunal: 這樣linux windows都能夠正確執行 05/03 21:19
6F:推 st1009: 你的問題漂亮到讓我以為是教學文(大推 05/03 22:07
這...上個色而已^^"
7F:推 coeric: 回Sunal 我自己有點懶的用os.path.join 05/03 23:51
8F:→ coeric: 不管是Linux 或是windows 一律用 / 05/03 23:52
9F:→ TitanEric: 如果要用py檔路徑的話 可以用__file__搭配os.path.join 05/04 00:42
10F:→ TitanEric: 這樣就不會錯~ 05/04 00:42
11F:推 cphe: PATH1是絕對路徑,PATH2是指當下.py的路徑,沒加./應該也行 05/04 09:51
是的 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
12F:→ cphe: 運行失敗的error msg是什麼? 05/04 10:02
13F:→ cphe: . 在windows就是指當下path,在cmd下打dir最前面就是 . 05/04 10:04
14F:→ cphe: 在linux有些情況你必須指明用./xxx 例如它是個執行檔 05/04 10:05
15F:→ cphe: 不過你遇到的狀況不確定是為什麼… 05/04 10:05
16F:推 Sunal: os.getcwd() 是絕對路徑哦 05/04 11:24
17F:推 anticrime: 我理解是在路徑敘述中 單純"."是當下資料夾 ".."上一層 05/04 13:24
18F:→ anticrime: 資料夾 然後/是當分段看 所以./就會是當前路徑往下跑 05/04 13:24







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP