利用循环语句,从文件中读取学生的数据(注意每行结尾读取一个换行符,存入ch中)
时间: 2023-06-19 08:09:05 浏览: 85
假设文件名为"students.txt",每行数据格式为"学号 姓名 年龄\n",可以使用以下代码读取文件并将每行数据存入一个列表中:
```python
students = []
with open("students.txt", "r") as f:
for line in f:
data = line.strip().split() # 去掉换行符并按空格分割数据
student = {"id": data[0], "name": data[1], "age": int(data[2])} # 将数据存入字典
students.append(student) # 将字典加入列表
```
这样,可以通过遍历`students`列表获取每个学生的信息,例如:
```python
for student in students:
print("学号:{},姓名:{},年龄:{}".format(student["id"], student["name"], student["age"]))
```
相关问题
C语言中,利用循环语句,从文件中读取学生的数据(注意每行结尾读取一个换行符,存入ch中)
可以使用C语言中的fscanf和fgets函数来读取文件中的数据。
如果每行数据的格式是固定的,比如每行包含学生的姓名和分数,可以使用fscanf函数按格式读取:
```c
#include <stdio.h>
int main() {
FILE *fp;
char name[20];
int score;
fp = fopen("students.txt", "r");
if (fp == NULL) {
printf("Error opening file\n");
return 1;
}
while (fscanf(fp, "%s %d\n", name, &score) == 2) {
printf("%s's score is %d\n", name, score);
}
fclose(fp);
return 0;
}
```
上述代码中,fscanf函数的第一个参数是文件指针,第二个参数是格式字符串,%s表示读取一个字符串,%d表示读取一个整数。注意,格式字符串中的\n表示读取一个换行符。
如果每行数据的格式不固定,比如每行是一个字符串,则可以使用fgets函数按行读取:
```c
#include <stdio.h>
int main() {
FILE *fp;
char ch[100];
fp = fopen("students.txt", "r");
if (fp == NULL) {
printf("Error opening file\n");
return 1;
}
while (fgets(ch, 100, fp) != NULL) {
printf("%s", ch);
}
fclose(fp);
return 0;
}
```
上述代码中,fgets函数的第一个参数是存储读取结果的字符数组,第二个参数是字符数组的大小,第三个参数是文件指针。在循环中每次读取一行数据,直到读到文件结尾为止。注意,fgets函数会读取换行符。
从文件中读取特定行数据边读边写入另一个文件的最后一行
可以使用Python的文件读写操作来实现这个功能:
```python
with open('input.txt', 'r') as input_file, open('output.txt', 'a') as output_file:
# 读取特定行数据
for line_number, line in enumerate(input_file):
if line_number == 2: # 读取第三行数据
# 写入到输出文件的末尾
output_file.write(line)
```
在这个例子中,我们打开了两个文件,一个是输入文件 `input.txt`,另一个是输出文件 `output.txt`。我们使用 `enumerate()` 函数来遍历输入文件的每一行,同时记录当前行号。当行号为 2 时(即第三行),我们将该行数据写入到输出文件的末尾。这里使用了输出文件的追加模式 `'a'`,使得新的数据不会覆盖原来的数据。
需要注意的是,在使用完文件后,应该使用 `with` 语句来关闭文件,以释放文件资源。