循环使用numpy loadtxt文件夹中的文本文件



我有几个类似名称的.txt文件,如data_00, data_01,…, data_99。我尝试使用np.loadtxt在for循环中读取它。现在,我可以使用r-string手动读取文本文件中的值numerical = np.loadtxt(r'file_pathdata_0.txt', delimiter=' '),它正在工作,但我正在考虑通过文件循环。

所以当我试图使用f-string,但它给我错误">SyntaxError: (unicode错误)'unicodeescape'编解码器无法解码位置2-3的字节:truncated UXXXXXXXX escape">

number = np.arange(100)
for i in number:
numerical = np.loadtxt(f'file_pathdata_{i}.txt', delimiter=' ')

我还尝试使用glob来导入值,(代码如下所示),而不是它没有以相同的顺序给我正确的值。

file_path = 'file_path' 
file_pattern = "*.txt"
files_list = glob(os.path.join(file_path,file_pattern))
for f in files_list:
print(f'----- Loading {f} -----')
numerical = np.loadtxt(f, delimiter=' ', unpack=True)

r'file_pathdata_0.txt'是一个原始(或r-)字符串。这意味着被视为文字反斜杠。如果没有r前缀,它将具有作为字符串转义字符的特殊含义。

f'file_pathdata_{i}.txt'是f字符串。这意味着{i}得到特殊处理,但没有。转义序列U(可能在您的实际路径中)必须后跟8个十六进制数字,这些数字构成Unicode码点的代码。显然这不是你要找的。

有几个解决方案可供您使用:

  1. 逃离:

    f'file_path\data_{i}.txt'
    

    这将在字符串

    中放置一个反斜杠
  2. 使字符串同时为f-和raw:

    fr'file_pathdata_{i}.txt'
    
  3. 完全不要使用反斜杠。Python理解正斜杠作为路径分隔符:

    f'file_path/data_{i}.txt'
    
  4. 有一个功能,如os.path.join为您添加路径分隔符:

    os.path.join('file_path', f'data_{i}.txt')
    
  5. 使用r-string,使用format方法代替较新的f-string功能:

    r'file_pathdata_{}.txt'.format(i)
    

最新更新