【问题标题】:How to get one variable to equal multiple lines of a .txt file?如何让一个变量等于 .txt 文件的多行?
【发布时间】:2017-06-14 07:25:19
【问题描述】:
如何让一个变量在每个循环中更新其字符串值?我将文本文件的行存储在名为$attempt 的变量中,然后将其显示在文本框中。
.txt 文件:
我的 AutoIt 脚本:
$attempt 始终等于字符串“dog”(pw.txt 的第一行),这意味着“dog”在文本框中输入了 5 次。我希望在文本框中输入“狗”、“苹果”、“沙子”、“鞋子”和“帽子”,一次,一次,一次,在不同的时间。
如何在每次循环迭代后使变量$attempt 等于“pw.txt”中的以下行(例如,
- 第一次迭代
$attempt = "Dog",
- 第二次迭代
$attempt = "Apple",
- 第三次迭代
$attempt = “沙”等)?
文本行是示例,可能会发生变化。
【问题讨论】:
标签:
string
variables
text-files
autoit
【解决方案1】:
我会将整个文件读入一个数组,而不是读取每一行:
$aPW = FileReadToArray("pw.txt")
For $attempt In $aPW
MsgBox(0, "test", $attempt)
Next
奖励:您不必事先知道文件中有多少行,而且速度要快得多,因为您只需访问文件一次。
注意: 数组的最大元素数为 16,777,216 (Source),因此当您的文件大于 1670 万行时,Richards 的答案是您的最佳选择,尽管速度很快劣势。
【解决方案2】:
您需要使用文件句柄。目前您正在打开文件,读取文件并在循环的每次迭代中关闭它。通过使用文件句柄,文件保持打开状态并读取下一行。
例如
$fh=FileOpen("pw.txt")
for $i=1 to 5
$attempt=FileReadLine($fh)
MsgBox(4096,"test",$attempt)
Next