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 22:21:02 浏览: 94
这段代码与之前的代码功能类似,但是在处理最后一个部分(是否借阅)时,将借阅信息的三个部分(借阅时间、借阅者和归还时间)也一并分开处理。具体来说,使用 `line.strip().split(",")` 将每一行数据分成了九个部分,分别是作者、书名、出版社、价格、简介、是否借阅、借阅时间、借阅者和归还时间。然后,将这些部分依次赋值给对应的变量,并在处理是否借阅时,将其转换成布尔类型,并根据是否借阅的情况对借阅信息进行处理。最后,使用这些信息创建一个 `Book` 类型的对象,并将其添加到 `self.books` 列表中。
相关问题
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` 类来实现您自己的数据集类。如果您使用其他深度学习框架或库,可能需要相应地调整代码。
下面函数功能为:打开文件“file.txt”,读取其中不以“#”开头的行 def file_read(): data_li = [] with __________________ as f: for data in f.readlines(): __________________: data_li.append(data) return data_li print(file_read())
这个函数的功能是打开文件 "file.txt",读取其中不以 "#" 开头的行,并将这些行存储在一个列表中,最后返回该列表。
下面是一个完整的实现:
```python
def file_read():
data_li = []
with open("file.txt", "r") as f:
for line in f:
if not line.startswith("#"):
data_li.append(line.strip())
return data_li
print(file_read())
```
这个函数首先打开名为 "file.txt" 的文件,并将其赋值给变量 `f`。然后,它遍历文件的每一行,并检查该行是否以 "#" 开头。如果不是,就将该行加入列表 `data_li` 中。最后,函数返回 `data_li` 列表。注意,使用 `strip()` 方法可以去掉每行末尾的换行符和其他空白字符。
阅读全文