如何重置Python中的counter?

2024-09-30 12:29:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的代码:

class badCmds:
    def removeCmds(self):
        fname = input("Enter bad command list filename")
        badCmdList = open(fname, "r")
        fname2 = input("Enter your script's filename")
        myScript = open(fname2, "r")
        commentedCmd = ""
        for badCmd in badCmdList:
            #myCmd = "#Script Generated by HP SSO Administrator";
            for myCmd in myScript:
                if badCmd in myCmd:
                    commentedCmd = "#"+myCmd
                    print(commentedCmd)

badCmds().removeCmds()

基本上,我有一个脚本,我从某个程序中提取出来放到另一个程序中。但是,当把它放入第二个程序时,有一个不允许的命令列表,所以我试图写一个小代码来注释掉(“#”)任何不允许的命令。稍后我将担心如何正确地打印列表,因为现在我只需要散列的命令。在

当我运行这段代码时,它第一次命中第一个循环,在第二个循环中旋转,直到到达文件末尾,然后在第一个循环中旋转,减去第一个值,再也不会进入第二个for循环。我真的不明白在Python中计数器是如何工作的;“badCmd”和“myCmd”是字符串还是整数?它们像字符串一样打印,但像整数一样计数。您可以看到我的注释行,其中我尝试通过给myCmd一个字符串值来重新启动第二个For循环上的计数器,该值恰好是第二个文件中的第一行。显然行不通。在

谢谢你的帮助。在


Tags: 字符串代码in命令程序forinputfilename
3条回答

在文件上使用in将一次获得一行,直到到达文件末尾。当再次尝试对文件使用in时,它将失败,因为您已经到达了文件的结尾。在

这意味着你有两个选择。将文件保存在列表中,或每次打开它。在

{3{打开python文件时最好使用关键字}关闭文件。在

class badCmds:
    def removeCmds(self):
        badCmdFileName   = input("Enter bad command list filename")
        myScriptFileName = input("Enter your script's filename")
        with open(badCmdFileName, "r") as badCmdFile:
            for badCmd in badCmdFile:
                with open(myScriptFileName, "r") as myScriptFile:
                    for myCmd in myScriptFile:
                        if badCmd in myCmd:
                            print("#" + myCmd)

badCmds().removeCmds()

迭代器采用放入其中的数据类型,定义为循环中被迭代的集合中的元素。在

因此,如果你有一个类似于[1,“Hello”,2,“goody”]的列表并对其进行迭代,迭代器将分别是int,然后是str,然后是int,然后是str。在

如果这是个问题,您可以通过在for循环中转换迭代器来强制所有内容都是字符串。你可能根本不需要试一试。在

myScript是一个打开的文件-在第一次运行它之后,文件指针位于文件的末尾,以后的迭代没有其他内容可返回。您可以使用myScript.seek(0,0)重置文件指针,但这是将整个文件读入列表的一个很好的用例。在

class badCmds:
    def removeCmds(self):
        fname = input("Enter bad command list filename")
        badCmdList = open(fname)
        fname2 = input("Enter your script's filename")
        myScript = open(fname2).readlines()
        commentedCmd = ""
        for badCmd in badCmdList:
            #myCmd = "#Script Generated by HP SSO Administrator";
            for myCmd in myScript:
                if badCmd in myCmd:
                    commentedCmd = "#"+myCmd
                    print(commentedCmd)

相关问题 更多 >

    热门问题