我想在 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(','))
我确信它非常基础,但是我不知道如何处理。
有什么想法吗?
答案 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)