访问保存在 .txt 文件中的文件路径。 (Python)
Accessing a file path saved in a .txt file. (Python)
我有一个文本文件,其中包含我希望打开的文件的文件路径。
文本文件如下所示:
28.2 -1.0 46 14 10 .\temp_109.17621\voltage_28.200\power_-1.txt
28.2 -2.0 46 16 10 .\temp_109.17621\voltage_28.200\power_-2.txt
...
我想打开此文件路径中的文件。
第一步是从文本文件加载每个文件路径。
我试过使用:
path = np.loadtxt('NonLorentzianData.txt',usecols=[5],dtype='S16')
生成的 path[1]
看起来像:
.\temp_109.17621
...
而不是整个文件路径。
我是不是使用了错误的 dtype
或者 loadtxt
是不可能的?
如果将数据类型更改为 np.str_
它将起作用:
path = np.loadtxt('NonLorentzianData.txt',usecols=[5],dtype=np.str_)
print(path[1])
.\temp_109.17621\voltage_28.200\power_-2.txt
或者使用 dtype=("S44")
也可以,这是两条路径中最长的路径的长度。
您正在指定一个 16 个字符的字符串,因此您只会得到 前 16 个字符。
In [17]: s = ".\temp_109.17621"
In [18]: len(s)
Out[18]: 16
# 43 character string
In [26]: path = np.loadtxt('words.txt',usecols=[5],dtype=("S43"))
In [27]: path[1]
Out[27]: '.\temp_109.17621\voltage_28.200\power_-2.tx'
In [28]: len(path[1])
Out[28]: 43
# 38 character string
In [29]: path = np.loadtxt('words.txt',usecols=[5],dtype=("S38"))
In [30]: path[1]
Out[30]: '.\temp_109.17621\voltage_28.200\power_'
In [31]: len(path[1])
Out[31]: 38
In [32]: path = np.loadtxt('words.txt',usecols=[5],dtype=np.str_)
In [33]: path[1]
Out[33]: '.\temp_109.17621\voltage_28.200\power_-2.txt'
如果您查看 docs,您将了解每个 dtype 的作用以及如何使用它们。
如果您只想要所有文件路径,您也可以使用 csv.reader
:
import csv
with open("NonLorentzianData.txt") as f:
reader = csv.reader(f,delimiter=" ")
for row in reader:
with open(row[-1]) as f:
.....
您使用 S16 作为类型并得到 .\temp_109.17621
作为结果(\
被转义 \
)并返回长度为 16 的字符串。
尝试使用 np.genfromtxt
和 dtype=None
或适当调整 dtype='S45'
(在您的情况下)
灵感来自 post
我有一个文本文件,其中包含我希望打开的文件的文件路径。
文本文件如下所示:
28.2 -1.0 46 14 10 .\temp_109.17621\voltage_28.200\power_-1.txt
28.2 -2.0 46 16 10 .\temp_109.17621\voltage_28.200\power_-2.txt
...
我想打开此文件路径中的文件。
第一步是从文本文件加载每个文件路径。
我试过使用:
path = np.loadtxt('NonLorentzianData.txt',usecols=[5],dtype='S16')
生成的 path[1]
看起来像:
.\temp_109.17621
...
而不是整个文件路径。
我是不是使用了错误的 dtype
或者 loadtxt
是不可能的?
如果将数据类型更改为 np.str_
它将起作用:
path = np.loadtxt('NonLorentzianData.txt',usecols=[5],dtype=np.str_)
print(path[1])
.\temp_109.17621\voltage_28.200\power_-2.txt
或者使用 dtype=("S44")
也可以,这是两条路径中最长的路径的长度。
您正在指定一个 16 个字符的字符串,因此您只会得到 前 16 个字符。
In [17]: s = ".\temp_109.17621"
In [18]: len(s)
Out[18]: 16
# 43 character string
In [26]: path = np.loadtxt('words.txt',usecols=[5],dtype=("S43"))
In [27]: path[1]
Out[27]: '.\temp_109.17621\voltage_28.200\power_-2.tx'
In [28]: len(path[1])
Out[28]: 43
# 38 character string
In [29]: path = np.loadtxt('words.txt',usecols=[5],dtype=("S38"))
In [30]: path[1]
Out[30]: '.\temp_109.17621\voltage_28.200\power_'
In [31]: len(path[1])
Out[31]: 38
In [32]: path = np.loadtxt('words.txt',usecols=[5],dtype=np.str_)
In [33]: path[1]
Out[33]: '.\temp_109.17621\voltage_28.200\power_-2.txt'
如果您查看 docs,您将了解每个 dtype 的作用以及如何使用它们。
如果您只想要所有文件路径,您也可以使用 csv.reader
:
import csv
with open("NonLorentzianData.txt") as f:
reader = csv.reader(f,delimiter=" ")
for row in reader:
with open(row[-1]) as f:
.....
您使用 S16 作为类型并得到 .\temp_109.17621
作为结果(\
被转义 \
)并返回长度为 16 的字符串。
尝试使用 np.genfromtxt
和 dtype=None
或适当调整 dtype='S45'
(在您的情况下)
灵感来自 post