[问题] 如何取出特定资料夹中档案加入成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