[問題] 如何取出特定資料夾中檔案加入成list

看板Python作者 (青柳立夏)時間7年前 (2017/09/09 18:48), 編輯推噓7(7012)
留言19則, 6人參與, 最新討論串1/1
剛用PYTHON不久 > < 問題可能比較基礎 但是搞了我一下午 不知道錯在哪 Q_Q 我想要讀取某特定資料夾下的一串檔案 想要取得的檔案 副檔名特定是 .dcm 整個檔案位置結構是 c > mywork(資料夾) > sample(資料夾) > 有A~Z各資料夾 > 各資料夾有要的檔案 我把網路上寫好的函式COPY來 all_files = [] def load_scan(path): for dirName, subdirList, fileList in os.walk(path): for filename in fileList: if ".dcm" in filename.lower(): all_files.append(os.path.join(dirName,filename)) return all_files 這樣的確可以正常運作 輸入 INPUT_FOLDER = 'C:\mywork\SAMPLE' load_scan(INPUT_FOLDER) 可是得到的檔案是 A~Z每一個資料夾裡面 所有.dcm檔案都被取出來成為一個LIST 我只要用可以讀.dcm檔案的函式去比如 read_dcm(all_files[0]) 就可以順利操作檔案了 到這邊運作正常~ 不過我想要改成說 只取得 SAMPLE裡面的比如 A資料夾, B資料夾的檔案內容 依樣畫葫蘆去改它就錯誤了 比如路徑改為 A_FOLDER = 'C:\mywork\SAMPLE\A_dir' 用 load_scan(A_FOLDER) 會跑出 scandir: embedded null character in path 的錯誤 想問問該怎麼樣才能順利取得某資料夾裡的特定檔案成為LIST呢~~ 實在想不到~~ 希望大大指教 > < -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.54.198 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1504954125.A.BE4.html

09/09 19:04, , 1F
A_FOLDER = r'C:\mywork\SAMPLE\A_dir'
09/09 19:04, 1F

09/09 19:28, , 2F
os.sep
09/09 19:28, 2F

09/09 19:50, , 3F
一樓大大的方法有點厲害 好像通了 怎麼有這種+個r就搞
09/09 19:50, 3F

09/09 19:50, , 4F
定的方法
09/09 19:50, 4F

09/09 20:54, , 5F
加r可以讓\不會被當成\n \t這種特殊字元
09/09 20:54, 5F

09/09 21:01, , 6F
感謝C大 這樣我可以理解為什麼會通 等於指定了一個資
09/09 21:01, 6F

09/09 21:02, , 7F
料夾路徑讓它去讀取吧~ 那為什麼原本的 沒有+r 也會正
09/09 21:02, 7F

09/09 21:02, , 8F
常運作沒出錯啊@@
09/09 21:02, 8F

09/09 21:06, , 9F
如果太麻煩不用解說沒關係XD 反正現在問題解決了 哈哈
09/09 21:06, 9F

09/09 21:30, , 10F
只有\a會合在一起被當成一個byte吧 其他的不會這樣
09/09 21:30, 10F

09/09 22:48, , 11F
推 c 大的解譯喔。https://goo.gl/4cGoLN 有詳解喔 ^_^
09/09 22:48, 11F

09/11 13:50, , 12F
不只 \a, \0 到 \9 和 \a 到 \f 都會; 比較建議的寫法是
09/11 13:50, 12F

09/11 13:51, , 13F
一樓那樣, 或者 os.sep.join(['C:', 'mywork', ...])
09/11 13:51, 13F

09/11 13:52, , 14F
或如果你用 Python 3, 可以改用 pathlib (支援 / 分隔)
09/11 13:52, 14F

09/11 20:31, , 15F
我的意思是他的例子\m和\S剛好沒被解讀成特殊字元
09/11 20:31, 15F

09/11 20:34, , 16F
另外r'..' 不適用於\結尾的字串 這倒是缺點
09/11 20:34, 16F

09/11 20:34, , 17F

09/12 14:25, , 18F
推 ck 大
09/12 14:25, 18F

09/13 11:24, , 19F
我自己是都養成習慣 把\ 改成/ 才不會出事
09/13 11:24, 19F
文章代碼(AID): #1PiySDla (Python)
文章代碼(AID): #1PiySDla (Python)