gpt4 book ai didi

python - 文件名及其路径作为字典不显示所有结果

转载 作者:行者123 更新时间:2023-12-01 02:22:00 25 4
gpt4 key购买 nike

我有带有路径的文本文件,例如:

/path/to/file.ext

我需要将这些路径拆分为字典,因此将是不包括文件和的路径 - 文件名及其扩展名。我用下面的代码解决了这个问题:

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) 检查了这一点。

  1. 所有路径都是使用 bash find 命令创建的,所以没问题。
  2. 路径名称不包含任何奇怪的字符。
  3. 删除 .strip('\n') 不会改变任何内容。
  4. 我使用的是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

现在,正如 @ Willem Van 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']})

关于python - 文件名及其路径作为字典不显示所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47869308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com