【问题标题】: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”中的以下行(例如,

  1. 第一次迭代$attempt = "Dog",
  2. 第二次迭代$attempt = "Apple",
  3. 第三次迭代$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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多