【问题标题】:Using Split arguments in other functions在其他函数中使用拆分参数
【发布时间】:2011-10-05 17:19:43
【问题描述】:

该代码假设采用一个包含多个参数的字符串,并使用“Split()”将它们拆分。它确实这样做了,但它只将第一个参数传递给“CheckList()”。因此,如果我输入“1 2 4”,它只会将“1”传递给 CheckList。其他一切都按原样工作。

import re            

def CheckList(Start):
    DoIt = 0
    s = int(Start)
    End = s + 1
    End = str(End)
    for PodCheck in F.readlines():

        if re.match('Pod' + End, PodCheck.strip()):
            DoIt = 0

        if re.match('Pod' + Start, PodCheck.strip()):
            DoIt = 1

        if DoIt == 1:
            print PodCheck,   

    return

def Split(P):
    Pods = P.split()
    for Pod in Pods:
        CheckList(Pod)

    return

F = open("C:\Users\User\Desktop\IP_List.txt")

Pod = raw_input('What pod number would you like to check?: ')
Split(Pod.strip())
print 'Done'

【问题讨论】:

  • 你怎么知道它只是传入第一个参数,而不仅仅是在for PodCheck in...期间丢失数据?
  • 这就是我认为的错误所在。事实证明我错了。

标签: python for-loop split


【解决方案1】:

你的问题就在这里:

for PodCheck in F.readlines():

第一次调用CheckList 会用完F 中的所有数据。对Checklist 的后续调用会跳过for 循环,因为没有内容可读取。

所以在打开F 之后,您应该阅读它的所有数据。在不更改太多代码的情况下,我会在您打开文件后添加:

F_lines = F.readlines()

并在CheckList中更改为循环

for PodCheck in F_lines:

【讨论】:

  • 您是英雄,先生。谢谢!
  • 问题是你说的。为了修复它,我在 CheckList() 中打开并关闭了文件。
猜你喜欢
  • 2013-05-18
  • 2015-11-07
  • 1970-01-01
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
  • 2019-02-05
相关资源
最近更新 更多