[問題] Django 檔案寫入問題

看板Python作者 (阿福)時間8年前 (2017/11/04 01:46), 8年前編輯推噓3(3019)
留言22則, 2人參與, 8年前最新討論串1/1
最近在學django 順便把以前寫的小工具整合好弄成弄成網頁版 現在卡在:讀完上傳好的檔案以後再做一些處理 把處理好的結果存成另外一個檔案後 會變成這樣 https://imgur.com/ORtLlfH
查了一下stack overflow 有發現類似的問題(http://bit.ly/2hBHQEh) 但照著他的做法還是沒用 不太知道要怎麼表達問題 但麻煩鄉民了 順便問一下最近有沒有人用vmware灌ubuntu 有時候會突然像是按了ctrl沒放開一樣 會一直反白文字或是放大縮小 鼠標也離不開vmware的視窗 除非把他強制關閉不然解決不了問題 我記得8月還沒這個問題的啊... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.225.56.33 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1509731173.A.481.html

11/04 02:00, 8年前 , 1F
錯誤訊息有說你是寫檔案到系統的 /media/ 目錄內了
11/04 02:00, 1F

11/04 02:00, 8年前 , 2F
你確定你程式真的是要寫入檔案放在根目錄內的 /media ?
11/04 02:00, 2F

11/04 02:01, 8年前 , 3F
另外你用 os.path.dirname(__file__) 這語法頗怪異
11/04 02:01, 3F

11/04 02:03, 8年前 , 4F
很明顯你程式碼內這結果傳回空字串,所以 join 路徑
11/04 02:03, 4F

11/04 02:04, 8年前 , 5F
是一個 "" + /media/....." 組合結果,所以就是 /media/
11/04 02:04, 5F

11/04 02:06, 8年前 , 6F
__file__ 這種取法是不能夠正確取得自己本身完整路徑
11/04 02:06, 6F
我剛剛把route裡面的/media/刪掉就可以存了 可是我的確是要存到根目錄的media目錄裡面 ※ 編輯: fordpines (36.225.56.33), 11/04/2017 02:12:20

11/04 02:08, 8年前 , 7F
單一 script 手動執行方式不同會有不同結果
11/04 02:08, 7F

11/04 02:08, 8年前 , 8F
python xxx.py 時候 __file__ 是得到 1.py
11/04 02:08, 8F

11/04 02:09, 8年前 , 9F
修正: python xxx.py 時候 __file__ 是得到 xxx.py
11/04 02:09, 9F

11/04 02:09, 8年前 , 10F
os.path.dirname(os.path.abspath(__file__))
11/04 02:09, 10F

11/04 02:10, 8年前 , 11F
python /path/xxx.py 的話 __file__ 是 /path/xxx.py
11/04 02:10, 11F

11/04 02:10, 8年前 , 12F
取當下script所在folder絕對路徑是這樣取
11/04 02:10, 12F

11/04 02:10, 8年前 , 13F
若你程式堅持要依據 py 檔案自己本身所在目錄的話
11/04 02:10, 13F

11/04 02:10, 8年前 , 14F
至少考慮一下取得真實的絕對路徑位置
11/04 02:10, 14F

11/04 02:11, 8年前 , 15F
os.path.dirname(os.path.realpath(__file__))
11/04 02:11, 15F

11/04 02:11, 8年前 , 16F
這種才比較對,才不會出包
11/04 02:11, 16F

11/04 02:11, 8年前 , 17F
另外你寫 django 一般檔案寫入應該主要是要寫入到
11/04 02:11, 17F

11/04 02:12, 8年前 , 18F
系統規定的 MEDIA_ROOT 變數內相關的路徑位置比較對啊
11/04 02:12, 18F

11/04 02:14, 8年前 , 19F
要用abspath 跟realpath也是看情況吧
11/04 02:14, 19F

11/04 02:16, 8年前 , 20F
對,我意思是取絕對路徑,用 abspath 比較正確,感謝
11/04 02:16, 20F

11/04 02:25, 8年前 , 21F
自己開一個folder 權限跟擁有者設定好 通常不會直接存到
11/04 02:25, 21F

11/04 02:25, 8年前 , 22F
/media底下
11/04 02:25, 22F
文章代碼(AID): #1P_AjbI1 (Python)
文章代碼(AID): #1P_AjbI1 (Python)