使用open()的输出与保存到variab时的不同行为

2024-09-30 10:32:37 发布

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

我有一个python中的字符串列表,我想找出哪些字符串不包含任何错误的子字符串,这些子字符串是我从文件中读取的。下面是我在python 2中的代码:

with open("badchars.txt", "w") as f:
  f.write("a b c")

mywords = ["good", "bad"]

print [
       word for word in mywords
          if all(
                 badchar not in word
                    for badchar in open("badchars.txt").read().split()
                )
      ]

with open("badchars.txt") as f:
  print [
         word for word in mywords
            if all(
                   badchar not in word
                      for badchar in f.read().split()
                  )
        ]

我希望两行都打印[“good”],但是第一行的行为与预期一样,第二行则显示[“good”,“bad”]。我不明白为什么

同样的事情也发生在python3中,如果我将print更改为print()

为什么会这样


Tags: 字符串intxtforifaswithopen
1条回答
网友
1楼 · 发布于 2024-09-30 10:32:37

f.read()从文件中的当前位置开始。因此,当您为同一个文件对象调用它两次时,第二次就没有什么可读的了

相关问题 更多 >

    热门问题