Traceback (most recent call last): File "E:\PycharmProjectFile\Python_shixun\PythonProjec022.py", line 116, in <module> show_readers() File "E:\PycharmProjectFile\Python_shixun\PythonProjec022.py", line 99, in show_readers print("{}\t{}\t{}\t{}\t{}\t{}\t {}".format(count, reader["id"], reader["name"], reader["gender"], reader["age"], TypeError: 'int' object is not subscriptable
时间: 2023-07-05 21:20:43 浏览: 166
这个错误提示说明你在尝试使用整数类型的对象进行字典的下标操作,但是整数类型的对象是不支持这种操作的。在你的代码中,可能是在遍历读者列表时,有一个 `reader` 对象被错误地赋值为了一个整数类型的值,导致后面在使用 `reader["id"]`、`reader["name"]` 等属性时出现了 `TypeError` 错误。
你可以在出现异常的代码行前添加一些调试代码,例如:
```python
for count, reader in enumerate(readers, start=1):
print(reader) # 添加这行代码,查看 reader 变量的值
print(reader["id"]) # 添加这行代码,查看是否出现异常
print(reader["name"]) # 添加这行代码,查看是否出现异常
# ...
```
通过上面的调试代码,你可以查看到 `reader` 变量的实际取值,以及在使用 `reader["id"]`、`reader["name"]` 等属性时是否出现异常。找到出现异常的原因后,即可对代码进行修正。
相关问题
Traceback (most recent call last): File "E:\PycharmProjectFile\Python_shixun\test2.py", line 46, in <module> add_bookType() File "E:\PycharmProjectFile\Python_shixun\test2.py", line 39, in add_bookType writer.writerow(Book_Type) _csv.Error: iterable expected, not type
这个错误提示意味着 `writerow()` 方法期望的是可迭代对象,而不是一个类型。你的 `Book_Type` 变量似乎是一个类型,而不是实际数据。
你可以尝试将 `Book_Type` 变量修改为一个包含单个元素的列表,例如:
```python
Book_Type = [book_type]
```
这样,`Book_Type` 就变成了一个可迭代对象,可以顺利地传递给 `writerow()` 方法。如果你仍然遇到问题,请检查你的代码,确保所有变量都已正确定义并传递给相关方法。
Traceback (most recent call last): File "E:\PycharmProjectFile\Python_shixun\test3.py", line 128, in <module> modify_book() File "E:\PycharmProjectFile\Python_shixun\test3.py", line 94, in modify_book reader = f.readlines(f) TypeError: argument should be integer or None, not '_io.TextIOWrapper'
这个错误是由于在调用 `readlines()` 方法时,传递了一个文件对象 `f` 作为参数,而 `readlines()` 方法的参数应该是一个整数或者 None,表示读取的最大字节数或者读取全部内容。因此,你需要将 `readlines(f)` 改为 `readlines()`,这样就可以读取文件的全部内容了。修改后的代码如下:
```
def modify_book():
book_name = input("请输入要修改的书籍名称:")
book_info = input("请输入新的书籍信息:")
with open("books.txt", "r", encoding="utf-8") as f:
books = f.readlines()
with open("books.txt", "w", encoding="utf-8") as f:
for book in books:
if book.startswith(book_name):
f.write(book_name + " " + book_info + "\n")
else:
f.write(book)
print("书籍信息修改成功!")
```
阅读全文