0

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

出现以下错误:

类型错误:+ 不支持的操作数类型:“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(','))

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

有任何想法吗?

4

2 回答 2

1

在将文件名变量传递给pathlib.Path.
IE

for kk in range(90):
    var = TEST_NR[kk] + '.txt'
    with open(folder / var ) as f:
于 2018-08-23T08:06:25.857 回答
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 显式优于隐式。(Python之禅

于 2018-08-23T14:11:05.567 回答