作者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://webptt.com/cn.aspx?n=bbs/Python/M.1504954125.A.BE4.html
1F:推 ckc1ark: A_FOLDER = r'C:\mywork\SAMPLE\A_dir' 09/09 19:04
2F:→ djshen: os.sep 09/09 19:28
3F:→ doasgloria: 一楼大大的方法有点厉害 好像通了 怎麽有这种+个r就搞 09/09 19:50
4F:→ doasgloria: 定的方法 09/09 19:50
5F:推 ckc1ark: 加r可以让\不会被当成\n \t这种特殊字元 09/09 20:54
6F:→ doasgloria: 感谢C大 这样我可以理解为什麽会通 等於指定了一个资 09/09 21:01
7F:→ doasgloria: 料夹路径让它去读取吧~ 那为什麽原本的 没有+r 也会正 09/09 21:02
8F:→ doasgloria: 常运作没出错啊@@ 09/09 21:02
9F:→ doasgloria: 如果太麻烦不用解说没关系XD 反正现在问题解决了 哈哈 09/09 21:06
10F:推 ckc1ark: 只有\a会合在一起被当成一个byte吧 其他的不会这样 09/09 21:30
12F:→ uranusjr: 不只 \a, \0 到 \9 和 \a 到 \f 都会; 比较建议的写法是 09/11 13:50
13F:→ uranusjr: 一楼那样, 或者 os.sep.join(['C:', 'mywork', ...]) 09/11 13:51
14F:→ uranusjr: 或如果你用 Python 3, 可以改用 pathlib (支援 / 分隔) 09/11 13:52
15F:推 ckc1ark: 我的意思是他的例子\m和\S刚好没被解读成特殊字元 09/11 20:31
16F:→ ckc1ark: 另外r'..' 不适用於\结尾的字串 这倒是缺点 09/11 20:34
18F:推 cutekid: 推 ck 大 09/12 14:25
19F:推 coeric: 我自己是都养成习惯 把\ 改成/ 才不会出事 09/13 11:24