【发布时间】:2015-03-22 05:12:37
【问题描述】:
我有一个代码可以打开一个文件,计算中间值并将该值写入一个单独的文件。有些文件可能是空的,所以我编写了以下循环来检查文件是否为空,如果是,则跳过它,增加计数并返回循环。它完成了它找到的第一个空文件的预期,但不是第二个。循环如下
t = 15.2
while t>=11.4:
if os.stat(r'C:\Users\Khary\Documents\bin%.2f.txt'%t ).st_size > 0:
print("All good")
F= r'C:\Users\Documents\bin%.2f.txt'%t
print(t)
F= np.loadtxt(F,skiprows=0)
LogMass = F[:,0]
LogRed = F[:,1]
value = np.median(LogMass)
filesave(*find_nearest(LogMass,LogRed))
t -=0.2
else:
t -=0.2
print("empty file")
输出如下
All good
15.2
All good
15.0
All good
14.8
All good
14.600000000000001
All good
14.400000000000002
All good
14.200000000000003
All good
14.000000000000004
All good
13.800000000000004
All good
13.600000000000005
All good
13.400000000000006
empty file
All good
13.000000000000007
Traceback (most recent call last):
File "C:\Users\Documents\Codes\Calculate Bin Median.py", line 35, in <module>
LogMass = F[:,0]
IndexError: too many indices
第二个问题是t 以某种方式从小数点后一位变为 15 位,而最后一位似乎在增加什么?
感谢您的任何帮助
编辑
错误IndexError: too many indices 似乎只适用于只有一行示例的文件...
12.9982324 0.004321374
如果我添加第二行,我不再收到错误,有人可以解释这是为什么吗?谢谢
编辑
我尝试了一个小实验,如果数组只有一行,numpy 似乎不喜欢提取一列。
In [8]: x = np.array([1,3])
In [9]: y=x[:,0]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-9-50e27cf81d21> in <module>()
----> 1 y=x[:,0]
IndexError: too many indices
In [10]: y=x[:,0].shape
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-10-e8108cf30e9a> in <module>()
----> 1 y=x[:,0].shape
IndexError: too many indices
In [11]:
【问题讨论】:
-
您看到的小数位是因为它是slowly accumulating a slight error from arithmetic operations(尤其是减法运算14.8-0.2)。如果这是一个问题,您可以选择限制小数位数的显示。
-
看看返回的numpy数组的形状
-
看
x.shape。在您的输入 10 中,异常发生在 形状调用之前。
标签: if-statement python-3.x while-loop