(1)按行读取文件studentInfo.txt的内容,获取学生姓名并写入到studentName.txt文件中,且给每一行按序加上行号;获取studentName.txt文件的长度及修改时间。 studentInfo.txt文件内容格式如下: 王珊珊,王珊珊,,20132213806,2015-10-10 14:30:56 张国辉,张国辉,,20132213944,2015-10-10 14:31:05 蒋宇宙,蒋宇宙,,20132213906,2015-10-10 14:31:24 王燕萍,王燕萍,,20132213847,2015-10-10 14:31:16
时间: 2023-08-14 12:08:20 浏览: 91
以下是Python代码实现:
```python
import os
# 读取 studentInfo.txt 文件内容并写入 studentName.txt 文件中
with open('studentInfo.txt', 'r') as f:
lines = f.readlines()
with open('studentName.txt', 'w') as f2:
for i, line in enumerate(lines):
name = line.split(',')[0]
f2.write(f'{i+1}. {name}\n')
# 获取 studentName.txt 文件长度和修改时间
name_file_size = os.path.getsize('studentName.txt')
name_file_mod_time = os.path.getmtime('studentName.txt')
print(f'Student Name file length: {name_file_size} bytes')
print(f'Student Name file modification time: {name_file_mod_time}')
```
运行后,会在当前目录下生成一个 `studentName.txt` 文件,其中每一行都带有行号和学生姓名。同时,会输出 `studentName.txt` 文件的长度和修改时间。
相关问题
给出以下题目的Java代码:按行读取文件studentInfo.txt的内容,获取学生姓名并写入到studentName.txt文件中,且给每一行按序加上行号;获取studentName.txt文件的长度及修改时间。 studentInfo.txt文件内容格式如下: 王珊珊,王珊珊,,20132213806,2015-10-10 14:30:56 张国辉,张国辉,,20132213944,2015-10-10 14:31:05 蒋宇宙,蒋宇宙,,20132213906,2015-10-10
以下为题目对应的Java代码:
```
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
public class Main {
public static void main(String[] args) {
try {
// 读取studentInfo.txt文件内容
File file = new File("studentInfo.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
String line;
int lineNumber = 1;
FileWriter writer = new FileWriter("studentName.txt");
while ((line = reader.readLine()) != null) {
// 获取学生姓名并写入到studentName.txt文件中
String name = line.split(",")[0];
writer.write(lineNumber + ". " + name + "\n");
lineNumber++;
}
reader.close();
writer.close();
// 获取studentName.txt文件的长度及修改时间
File studentNameFile = new File("studentName.txt");
long length = studentNameFile.length();
Date lastModified = new Date(studentNameFile.lastModified());
System.out.println("Length: " + length);
System.out.println("Last modified: " + lastModified);
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
将3名学生的学号、姓名和成绩写入二进制文件studentinfo.dat中,再将第2名学生的成绩改为627,最后从文件中读取第m(m的值由用户从键盘输入)名学生的信息并将其输出到屏幕上。用c++解决
以下是用C++编写的程序,实现将学生信息写入二进制文件、修改学生信息并读取指定学生信息并输出到屏幕上:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Student {
int id;
string name;
float score;
};
int main() {
// 创建结构体数组并初始化
Student students[3] = {
{ 1001, "Tom", 85.5 },
{ 1002, "Jerry", 90.0 },
{ 1003, "Mickey", 95.5 }
};
// 将学生信息写入二进制文件
ofstream outfile("studentinfo.dat", ios::binary);
if (!outfile) {
cout << "Failed to open file!" << endl;
return 0;
}
outfile.write((char*)students, sizeof(Student) * 3);
outfile.close();
// 修改学生信息
students[1].score = 627.0;
// 读取指定学生的信息并输出到屏幕上
int m;
cout << "Please input the index of the student you want to read: ";
cin >> m;
Student read_student;
ifstream infile("studentinfo.dat", ios::binary);
if (!infile) {
cout << "Failed to open file!" << endl;
return 0;
}
infile.seekg(sizeof(Student) * (m-1), ios::beg);
infile.read((char*)&read_student, sizeof(Student));
infile.close();
cout << "Student " << m << endl;
cout << "ID: " << read_student.id << endl;
cout << "Name: " << read_student.name << endl;
cout << "Score: " << read_student.score << endl;
return 0;
}
```
程序首先创建了一个包含3名学生信息的结构体数组,并将其写入二进制文件`studentinfo.dat`中。然后程序修改了第2名学生的成绩为627,并从文件中读取第m(由用户从键盘输入)名学生的信息并输出到屏幕上。
注意,在读取指定学生信息时,程序使用了`seekg`函数将文件指针移动到指定位置。同时,读取的字节数为一个结构体的大小。
阅读全文