文件名以及其作为字典的路径没有显示所有结果
我得到了与路径的文本文件,如:文件名以及其作为字典的路径没有显示所有结果
/path/to/file.ext
我需要这些路径分成字典所以key
将排除路径文件和value
- 文件名及其扩展名。我曾与下面的代码管理这样的:
base = {} with open ('text.txt') as f:
for line in f:
key,val = line.strip('\n').rsplit('/',1)
base[key] = val
我用.strip('\n')
摆脱换行和.rsplit('/',1)
基于路径中的最后/
分裂我的整个路径。
该代码基本上正在工作,但是...它不处理整个txt
文件。
处理9900+路径的文件,我得到了少于3000个元素(键+值)的基础。我检查了使用len(base)
。
- 所有的路径,使用bash
find
命令做出这样都OK。 - 路径名称不包含任何古怪的字符。
- 删除
.strip('\n')
不会改变任何内容。我使用Python 2.7.10。
回答:
使用os.path
模块来处理目录。 假设有一行/path/to/file.ext
,下面的代码
import os with open('test.txt') as f:
for line in f:
line = line.strip()
print(os.path.dirname(line))
print(os.path.basename(line))
输出
/path/to file.ext
现在,@威廉·Onsem在注释中解释文件,使用os.path.dirname
为重点,将覆盖以前的路径文件在同一个目录中。为了解决这个问题,你需要使用列表作为值:
import os from collections import defaultdict
d = defaultdict(list)
with open('test.txt') as f:
for line in f:
line = line.strip()
d[os.path.dirname(line)].append(os.path.basename(line))
现在考虑:
/path/to/file1.ext /path/to/file2.ext
/path/to/file3.ext
/another/path/to/file4.ext
运行上面的代码,print(d)
将输出
defaultdict(<class 'list'>, {'/path/to': ['file1.ext', 'file2.ext', 'file3.ext'], '/another/path/to': ['file4.ext']})
以上是 文件名以及其作为字典的路径没有显示所有结果 的全部内容, 来源链接: utcz.com/qa/263622.html