如果更改數據類型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你會看到什麼每一個D型功能以及如何使用它們。
如果你只是希望所有的文件路徑,你也可以使用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:
.....
loadtxt負載字面上的文件中包含的啓發。它不明白該列是一個文件路徑。 – nneonneo
是的。就這些。 – 8765674
@ 8765674全部都是正確的,你使用S16作爲一個類型並返回了長度爲16的字符串(\\是一個字符)。根據[this](http://stackoverflow.com/questions/20121949/python-numpy-loadtxt-with-varied-string-entries-but-know-line-format)嘗試使用'np.genfromtxt'和' dtype = None'或者正確調整字符串的長度 – Reishin