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

作者: doasgloria (青柳立夏)   2017-09-09 18:48:40
剛用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呢~~
實在想不到~~ 希望大大指教 > <
作者: ckc1ark (偽物)   2017-09-09 19:04:00
A_FOLDER = r'C:\mywork\SAMPLE\A_dir'
作者: djshen (djshen)   2017-09-09 19:28:00
os.sep
作者: doasgloria (青柳立夏)   2017-09-09 19:50:00
一樓大大的方法有點厲害 好像通了 怎麼有這種+個r就搞定的方法
作者: ckc1ark (偽物)   2017-09-09 20:54:00
加r可以讓\不會被當成\n \t這種特殊字元
作者: doasgloria (青柳立夏)   2017-09-09 21:01:00
感謝C大 這樣我可以理解為什麼會通 等於指定了一個資料夾路徑讓它去讀取吧~ 那為什麼原本的 沒有+r 也會正常運作沒出錯啊@@如果太麻煩不用解說沒關係XD 反正現在問題解決了 哈哈
作者: ckc1ark (偽物)   2017-09-09 21:30:00
只有\a會合在一起被當成一個byte吧 其他的不會這樣
作者: cutekid (可愛小孩子)   2017-09-09 22:48:00
推 c 大的解譯喔。https://goo.gl/4cGoLN 有詳解喔 ^_^
作者: uranusjr (←這人是超級笨蛋)   2017-09-11 13:50:00
不只 \a, \0 到 \9 和 \a 到 \f 都會; 比較建議的寫法是一樓那樣, 或者 os.sep.join(['C:', 'mywork', ...])或如果你用 Python 3, 可以改用 pathlib (支援 / 分隔)
作者: ckc1ark (偽物)   2017-09-11 20:31:00
我的意思是他的例子\m和\S剛好沒被解讀成特殊字元另外r'..' 不適用於\結尾的字串 這倒是缺點ref: https://stackoverflow.com/a/19654184
作者: cutekid (可愛小孩子)   2017-09-12 14:25:00
推 ck 大
作者: coeric ( )   2017-09-13 11:24:00
我自己是都養成習慣 把\ 改成/ 才不會出事

Links booklink

Contact Us: admin [ a t ] ucptt.com