【问题标题】:Why does my .find() function keep throwing up an error? [duplicate]为什么我的 .find() 函数不断抛出错误? [复制]
【发布时间】:2016-01-27 03:59:13
【问题描述】:

我想尝试打开一个文件,找到一个特定字符串的索引(S_N)然后寻找位置并在下面写一些东西。

我正在使用代码...

C1 = open("Class 1.txt", "a")
pos = C1.find(S_N)
C1.seek(pos)
C1.write(correct)

每次我使用它时,python都会抛出这个错误......

Traceback (most recent call last):
  File "C:\Users\eddie\Documents\HOMEWORK!!!!\11c\Computing Science\controlled assessment help\task3\task 3 official.py", line 41, in <module>
    pos = C1.find(S_N)
AttributeError: '_io.TextIOWrapper' object has no attribute 'find'

为什么这不起作用????

【问题讨论】:

  • 好吧,因为'_io.TextIOWrapper' object has no attribute 'find'S_N 是什么?那个文件内容是什么?

标签: python text-files


【解决方案1】:

您不能直接在文件中搜索字符串;您必须先转换为字符串。此外,您正在以a 模式打开文件,该模式是只写的,因此请尝试以下操作:

C1 = open("Class1.txt","r")
dataList = C1.readlines()
data = ""
for line in dataList:
    data += line
C1.close()

# do stuff with data, which is a string

其他说明:

我不建议您的文件名中包含space;将其重命名为Class.txt,如我的示例所示。

.find(something)something必须是字符串,比如:data.find("S_N")

【讨论】:

  • 文件名中有空格并没有错。为什么会有?
  • 在处理命令行的时候比较混乱,但你不必这样做。
  • 如果您在命令行上,只需将文件名放在引号中,或转义空格(在 POSIX 系统上)。我只是不明白你为什么还要费心告诉别人这样做。我们不再使用 DOS...
  • 就像我说的,你不必...
猜你喜欢
  • 2021-05-11
  • 2020-11-14
  • 2015-02-13
  • 2013-06-19
  • 2018-08-19
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多