我有一组代码,我在其中声明了所有变量的大小。但是,我想更改它们,因此一些变量是可分配的。
这是(我相信)是原始的相关代码。
import os
(_, _, my_files) = os.walk("C:\\Users\\guest.user\\task2").next()
amount = len([f for f in my_files if f.endswith('.txt')])
print amount
if amount > 20:
#This is my next problem - needs to truncate the file once there is more than 20
这是我想要的形式。
parameter (m=10**5,nchar=2000,ncols=110)
character (LEN=*), PARAMETER :: FORM = "(A)"
character(LEN=nchar),DIMENSION(m) :: data
* determine the length of the data
nlines = 0
do i = 1,m
read(12,*,end=10)
nlines = nlines+1
end do
nlines = nlines+1
* read in the data
10 REWIND(unit = 12)
do i = 1,nlines
read(12,FORM) data(i)
end do
问题是,这会导致整数溢出错误。 " Fortran运行时错误:计算要分配的内存量时整数溢出"。我发现这非常令人困惑,因为“  nlines'和' j'我从测试数据集中获得的值分别只有10和110。
我发现如果我没有分配字符长度(即保持不变),这就行了。
我正在使用gfortran,版本4.8.0。
我的代码/方法有什么问题?