【问题标题】:Python for-loop is not passing variable past the first iterationPython for 循环没有通过第一次迭代传递变量
【发布时间】:2019-02-08 16:48:53
【问题描述】:

我正在尝试将三个 .txt 文件组合在一起。第一个文件包含应该在页面顶部的一行,第二行应该包含第一个客户的发票信息,然后下面应该是发票中的详细信息。每个都有一个介于 31625 和 31643 之间的 ID。程序应该查看第一个文件,导入第一行,然后从第二个文件导入第一行,然后返回任何具有 31625 键的详细信息,然后移动到第二个第二个 .txt 文件的行。等等。 第二个 .txt 文件和第三个 .txt 文件都包含密钥。

我写了一个插入第一行的python脚本, 然后它从第二个 .txt 文件插入第一行,然后从 3 .txt 文件中找到任何具有 31625 键的内容,但停在那里。如何让它遍历每个键?

import sys

initial = open(r"dir:text1.txt","a+")

export = open(r"dir:text2.txt","r+")

invoice = open(r"dir:text3.txt3","r+")

detail = open(r"dir:text4.txt","r+")


for line in export:
    initial.write(line)


def inv_insert(a):
    for line in invoice:
        if str(a) in line:
            initial.write(line)

def det_insert(a):
    for line in detail:
        if str(a) in line:
            initial.write(line)


def exp_insert():
    for line in export:
        initial.write(line)

exp_insert()
for i in range(31625,31644):
    inv_insert(i)
    det_insert(i)

initial.close()
export.close()
invoice.close()
detail.close()

【问题讨论】:

  • 你试过什么?您是否尝试过调试自己的代码?你做了什么研究?您可能想回顾一下 Python 如何处理空格。 ericlippert.com/2014/03/05/how-to-debug-small-programs
  • 您在第一次之后耗尽了文件迭代器。刚重新打开文件或.seek到开头
  • 除非文件很大——只需将其放入一行代码中的列表中,然后您就可以对其进行迭代以达到您的心目中的内容。
  • 我在 pycharm 中调试了代码,发现它在第二轮跳过了 if 语句并继续。似乎它读取了文件,但没有进一步。我找不到有人将它用于相同目的的任何其他情况。我查看了有关 for 循环的文档,以确保我写得正确。

标签: python python-3.x for-loop


【解决方案1】:

欢迎使用 fcha256,您的代码未针对 python 正确格式化。我还没有运行它,但你应该从这样的正确格式开始,然后对你的代码进行故障排除:

    import sys

    initial = open(r"dir:text1.txt","a+")
    export = open(r"dir:text2.txt","r+")
    invoice = open(r"dir:text3.txt3","r+")
    detail = open(r"dir:text4.txt","r+")


    def inv_insert(a):
      for line in invoice:
        if str(a) in line:
          initial.write(line)


    def det_insert(a):
      for line in detail:
        if str(a) in line:
          initial.write(line)


    def exp_insert():
      for line in export:
        initial.write(line)


    exp_insert()

    for i in range(31625,31644):
      inv_insert(i)
      det_insert(i)


    initial.close()
    export.close()

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多