def load_books(self): with open("books.txt", "r") as f: lines = f.readlines() for line in lines: author, title, publisher, price, brief, is_borrowed, borrow_time, borrower, return_time = line.strip().split( ",") is_borrowed = True if is_borrowed == "True" else False if is_borrowed: borrow_time = time.strptime(borrow_time, "%Y-%m-%d %H:%M:%S") borrower = borrower.strip() return_time = time.strptime(return_time, "%Y-%m-%d %H:%M:%S") else: borrow_time = None borrower = None return_time = None book = Book(author, title, publisher, price, brief, is_borrowed, borrow_time, borrower, return_time) self.books.append(book)
时间: 2024-02-14 11:21:02 浏览: 15
这段代码与之前的代码功能类似,但是在处理最后一个部分(是否借阅)时,将借阅信息的三个部分(借阅时间、借阅者和归还时间)也一并分开处理。具体来说,使用 `line.strip().split(",")` 将每一行数据分成了九个部分,分别是作者、书名、出版社、价格、简介、是否借阅、借阅时间、借阅者和归还时间。然后,将这些部分依次赋值给对应的变量,并在处理是否借阅时,将其转换成布尔类型,并根据是否借阅的情况对借阅信息进行处理。最后,使用这些信息创建一个 `Book` 类型的对象,并将其添加到 `self.books` 列表中。
相关问题
class SalesManage: def __int__(self): self.saleslist = [] def load_sales_data(self): with open('sales.txt', "r", encoding="utf-8") as f: lines = f.readlines() for i in lines: month, sales = i.strip().split(' ') self.saleslist.append(Sales(month, sales)) 这段代码出现了'SalesManage' object has no attribute 'saleslist'的错误怎么改
这个错误通常是因为在类的某个方法中使用了一个属性,但是这个属性并没有被正确地初始化。在你的代码中,你定义了 `__int__` 方法,但正确的构造方法名称应该是 `__init__`。所以修改这个方法名称即可:
```
class SalesManage:
def __init__(self):
self.saleslist = []
def load_sales_data(self):
with open('sales.txt', "r", encoding="utf-8") as f:
lines = f.readlines()
for i in lines:
month, sales = i.strip().split(' ')
self.saleslist.append(Sales(month, sales))
```
这样就能够正确初始化 `saleslist` 属性了。
class myDataset(Dataset): def __init__(self, csv_file, txt_file, root_dir, other_file): self.csv_data = pd.read_csv(csv_file) with open(txt_file, 'r') as f: data_list = f.readlines() self.txt_data = data_list self.root_dir = root_dir def __ien__(self): return len(self.csv_data) def __getitem__(self, idx): data = (self.csv_data[idx], self.txt_data[idx]) return data
在您提供的代码中,有两个地方出现了错误。
首先,`__ien__` 应该是 `__len__`,表示获取数据集的长度。修正后的代码如下:
```python
import pandas as pd
from torch.utils.data import Dataset
class myDataset(Dataset):
def __init__(self, csv_file, txt_file, root_dir, other_file):
self.csv_data = pd.read_csv(csv_file)
with open(txt_file, 'r') as f:
data_list = f.readlines()
self.txt_data = data_list
self.root_dir = root_dir
def __len__(self):
return len(self.csv_data)
def __getitem__(self, idx):
data = (self.csv_data.iloc[idx], self.txt_data[idx])
return data
```
其次,在 `__getitem__` 方法中,您正在尝试使用索引访问 `self.csv_data` 和 `self.txt_data`,这样会导致错误。要正确访问数据,请使用 `.iloc` 用于 DataFrame 的索引,以及使用索引访问列表。修正后的代码如下:
```python
import pandas as pd
from torch.utils.data import Dataset
class myDataset(Dataset):
def __init__(self, csv_file, txt_file, root_dir, other_file):
self.csv_data = pd.read_csv(csv_file)
with open(txt_file, 'r') as f:
data_list = f.readlines()
self.txt_data = data_list
self.root_dir = root_dir
def __len__(self):
return len(self.csv_data)
def __getitem__(self, idx):
data = (self.csv_data.iloc[idx], self.txt_data[idx])
return data
```
这样,您的代码应该能够正常运行了。请注意,我假设您使用了 PyTorch 的 `Dataset` 类来实现您自己的数据集类。如果您使用其他深度学习框架或库,可能需要相应地调整代码。