这是我的代码:
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循环上的计数器,该值恰好是第二个文件中的第一行。显然行不通。在
谢谢你的帮助。在
在文件上使用
in
将一次获得一行,直到到达文件末尾。当再次尝试对文件使用in
时,它将失败,因为您已经到达了文件的结尾。在这意味着你有两个选择。将文件保存在列表中,或每次打开它。在
{3{打开python文件时最好使用关键字}关闭文件。在
迭代器采用放入其中的数据类型,定义为循环中被迭代的集合中的元素。在
因此,如果你有一个类似于[1,“Hello”,2,“goody”]的列表并对其进行迭代,迭代器将分别是int,然后是str,然后是int,然后是str。在
如果这是个问题,您可以通过在for循环中转换迭代器来强制所有内容都是字符串。你可能根本不需要试一试。在
myScript是一个打开的文件-在第一次运行它之后,文件指针位于文件的末尾,以后的迭代没有其他内容可返回。您可以使用
myScript.seek(0,0)
重置文件指针,但这是将整个文件读入列表的一个很好的用例。在相关问题 更多 >
编程相关推荐