作者doasgloria (青柳立夏)
看板Python
標題[問題] 如何取出特定資料夾中檔案加入成list
時間Sat Sep 9 18:48:40 2017
剛用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
推 ckc1ark: A_FOLDER = r'C:\mywork\SAMPLE\A_dir' 09/09 19:04
→ djshen: os.sep 09/09 19:28
→ doasgloria: 一樓大大的方法有點厲害 好像通了 怎麼有這種+個r就搞 09/09 19:50
→ doasgloria: 定的方法 09/09 19:50
推 ckc1ark: 加r可以讓\不會被當成\n \t這種特殊字元 09/09 20:54
→ doasgloria: 感謝C大 這樣我可以理解為什麼會通 等於指定了一個資 09/09 21:01
→ doasgloria: 料夾路徑讓它去讀取吧~ 那為什麼原本的 沒有+r 也會正 09/09 21:02
→ doasgloria: 常運作沒出錯啊@@ 09/09 21:02
→ doasgloria: 如果太麻煩不用解說沒關係XD 反正現在問題解決了 哈哈 09/09 21:06
推 ckc1ark: 只有\a會合在一起被當成一個byte吧 其他的不會這樣 09/09 21:30
→ uranusjr: 不只 \a, \0 到 \9 和 \a 到 \f 都會; 比較建議的寫法是 09/11 13:50
→ uranusjr: 一樓那樣, 或者 os.sep.join(['C:', 'mywork', ...]) 09/11 13:51
→ uranusjr: 或如果你用 Python 3, 可以改用 pathlib (支援 / 分隔) 09/11 13:52
推 ckc1ark: 我的意思是他的例子\m和\S剛好沒被解讀成特殊字元 09/11 20:31
→ ckc1ark: 另外r'..' 不適用於\結尾的字串 這倒是缺點 09/11 20:34
推 cutekid: 推 ck 大 09/12 14:25
推 coeric: 我自己是都養成習慣 把\ 改成/ 才不會出事 09/13 11:24