使用pathlib遍历文件夹,我无法使用path + value + string打开文件

时间:2018-08-23 07:33:09

标签: python for-loop pathlib unsupportedoperation

我想在 pathlib 的帮助下遍历一个文件夹。 问题似乎是,我无法使用路径“ 文件夹”来将值与字符串组合。

出现以下错误:

  

TypeError:+不支持的操作数类型:“ WindowsPath”和“ str”

这是我的代码:

from pathlib import Path

#import pandas as pd
#import numpy as np
  

如果名称 =='主要':

folder = Path('ASCII/')

TEST_NR = []

for ii in range(1,91):

    TEST_NR.append('Test' + str(ii))

DCT = {i:[] for i in TEST_NR}

for jj in TEST_NR:

    DCT['%s' % jj] = []

for kk in range(90):

    with open(folder / TEST_NR[kk] + '.txt') as f: ######### *ERROR* ##########

        for _ in range(17):

            next(f)

        for line in f:

            DCT[TEST_NR[kk]].append(line.strip().split(','))

我确信它非常基础,但是我不知道如何处理。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

在将文件名变量传递到pathlib.Path之前创建文件名变量。

for kk in range(90):
    var = TEST_NR[kk] + '.txt'
    with open(folder / var ) as f:

答案 1 :(得分:0)

另一个更明确的 1 版本是:

for kk in range(90):
    file_path = folder / TEST_NR[kk]
    with open(file_path.with_extension('.txt')) as f:

也请原谅未提出的建议,但是在Python中,我们通常直接通过列表而不是使用索引进行迭代。在这种情况下,您的代码将变为:

from pathlib import Path
from collections import defaultdict


if __name__ == '__main__':
    folder = Path('ASCII')

    # using a defaultdict will return an empty list when 
    # requesting an index that does not exist
    DCT = defaultdict(list)

    for test_num in range(1,91):
        test_path = Path(f'Test{test_num}')
        with open(folder / test_path.with_suffix('.txt')) as test_file:
            for _ in range(17):
                next(test_file)

            for line in test_file:
                DCT[test_path].append(line.strip().split(','))

1显式比隐式好。 (The Zen of Python