我有几个类似名称的.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码点的代码。显然这不是你要找的。
有几个解决方案可供您使用:
-
逃离
:
f'file_path\data_{i}.txt'
这将在字符串
中放置一个反斜杠 -
使字符串同时为f-和raw:
fr'file_pathdata_{i}.txt'
-
完全不要使用反斜杠。Python理解正斜杠作为路径分隔符:
f'file_path/data_{i}.txt'
-
有一个功能,如
os.path.join
为您添加路径分隔符:os.path.join('file_path', f'data_{i}.txt')
-
使用r-string,使用
format
方法代替较新的f-string功能:r'file_pathdata_{}.txt'.format(i)