我有一个包含100列和1095行的文本文件。我需要编写一个方案代码来读取每个循环中的一行txt文件,并将原始的100个数字中的每一个分配给100个不同的变量,这将重复1095次。
这些是我现在掌握的东西:
A。 这是我用于为变量赋值的代码,我通过ANSYS-FLUENT(计算流体动力学工具)读取它。
(define flow-wt-1 0.0)
(define run
( lambda(flow-time)
(if (< flow-time 181)
(set! flow-wt-1 '1.0)
(set! flow-wt-1 '0.0))
(ti-menu-load-string (format #f "def bc outflow 6 ~a" flow-wt-1))
)
)
B。 我还找到了以下代码来读取txt文件。
(defun load_data (arr column filename)
(setf lnt (first (array-dimensions arr)))
(with-open-file (str (format nil "~A.txt" filename) :direction :input)
(loop :for i :from 0 :to (1- lnt) :do
(setf (aref arr i 0) (read-from-string (nth (1- column) (split-sequence:SPLIT-SEQUENCE #\Space (read-line str)))))
)
)
)
现在,我想做的是: 我想删除“if”条件(在A下)并使用flow-time的值作为我想要编码的循环的计数器来读取我的txt文件的每一行。 而不是'1.0 in(set!flow-wt-1'1.0)我想引用(例如)第一行的第二列。
我的问题是: 我可以将这两段代码连接在一起吗?如何从txt文件中调用值?
我真的很感激任何建议和意见。
非常感谢!
答案 0 :(得分:0)
这可能会有所帮助(使用GNU guile,细节可能会有所不同):
(with-input-from-file
"your/file.dat"
(lambda ()
(let loop ((line (read-line)))
(if (not (eof-object? line))
(let ((fields (string-split line #\space)))
(display fields) ;; or whatever else you need to do
(loop (read-line)))))))