从文件in.txt中读取内容,将其中的奇数行写入文件out.txt
时间: 2024-02-03 10:13:00 浏览: 26
好的,以下是Python代码实现:
```python
with open('in.txt', 'r') as f_in, open('out.txt', 'w') as f_out:
lines = f_in.readlines()
for i in range(1, len(lines), 2): # 从第1行开始,步长为2,即取奇数行
f_out.write(lines[i])
```
首先使用`open()`函数打开输入文件`in.txt`和输出文件`out.txt`,分别以只读模式和写入模式打开。
接着使用`readlines()`方法读取输入文件中的所有行,并存储在一个列表中。
然后使用`range()`函数和步长为2的方式,来获取奇数行的索引位置,即`1, 3, 5, ...`,并使用`write()`方法将这些行写入输出文件中。
最后,使用`with`语句可以确保文件的正确关闭。
相关问题
java从filein.txt文件读入信息,删除文件中的偶数行,保存到fileout.txt文件中
好的,我可以帮你编写一个Java程序,实现从filein.txt文件读入信息,删除文件中的偶数行,保存到fileout.txt文件中的功能。以下是示例代码:
```java
import java.io.*;
public class DeleteEvenLines {
public static void main(String[] args) {
try {
// 打开文件输入流
FileInputStream inputStream = new FileInputStream("filein.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// 打开文件输出流
FileOutputStream outputStream = new FileOutputStream("fileout.txt");
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
String line;
int lineNumber = 0;
// 逐行读取文件内容,并删除偶数行
while ((line = bufferedReader.readLine()) != null) {
lineNumber++;
if (lineNumber % 2 != 0) {
// 将奇数行写入输出文件
bufferedWriter.write(line);
bufferedWriter.newLine();
}
}
// 关闭输入输出流
bufferedReader.close();
bufferedWriter.close();
System.out.println("删除偶数行完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
你只需要将filein.txt文件放在与Java程序相同的目录下,然后运行该程序即可。在程序运行完成后,你将会得到一个新的文件fileout.txt,其中删除了filein.txt文件中的偶数行。
1.(1) 分别使用FileWriter 和 BufferedWriter 往文件exp5_1.txt和文件exp5_2.txt中写入1万个随机整数(数与数之间用空格隔开),并在控制台上显示程序运行的时间。(exp5_1.java) (提示:用时采用方法System.currentTimeMillis()求时间差。)2.(2) 请使用字节流的方式读出文件exp5_1.txt中内容,然后将文件中的所有奇数写入文件ex5_3.txt中,使用字符流的方式读出文件exp5_2.txt中内容,然后将文件中的所有偶数写入文件exp5_4.txt中。(exp4_2.java)3.(3) 请使用File类的相关方法,遍历(1)、(2)两题所读写的文件所在的目录下的所有文件。(exp5_3.java)
好的,你的第一个问题有三个小问题,我来一一回答。
1. 首先,使用FileWriter往文件exp5_1.txt中写入1万个随机整数(数与数之间用空格隔开)可以这样实现:
```java
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class Exp5_1 {
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis(); // 记录开始时间
FileWriter fw = new FileWriter("exp5_1.txt");
Random random = new Random();
for (int i = 0; i < 10000; i++) {
fw.write(random.nextInt() + " ");
}
fw.close();
long end = System.currentTimeMillis(); // 记录结束时间
System.out.println("使用FileWriter写入文件exp5_1.txt用时:" + (end - start) + "ms");
}
}
```
使用BufferedWriter往文件exp5_2.txt中写入1万个随机整数(数与数之间用空格隔开)可以这样实现:
```java
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Random;
public class Exp5_1 {
public static void main(String[] args) throws IOException {
long start = System.currentTimeMillis(); // 记录开始时间
BufferedWriter bw = new BufferedWriter(new FileWriter("exp5_2.txt"));
Random random = new Random();
for (int i = 0; i < 10000; i++) {
bw.write(random.nextInt() + " ");
}
bw.close();
long end = System.currentTimeMillis(); // 记录结束时间
System.out.println("使用BufferedWriter写入文件exp5_2.txt用时:" + (end - start) + "ms");
}
}
```
2. 接着,使用字节流的方式读出文件exp5_1.txt中内容,然后将文件中的所有奇数写入文件exp5_3.txt中,使用字符流的方式读出文件exp5_2.txt中内容,然后将文件中的所有偶数写入文件exp5_4.txt中可以这样实现:
```java
import java.io.*;
public class Exp5_2 {
public static void main(String[] args) throws IOException {
// 读取exp5_1.txt中的所有奇数,写入exp5_3.txt中
FileInputStream fis = new FileInputStream("exp5_1.txt");
FileOutputStream fos = new FileOutputStream("exp5_3.txt");
int num;
while ((num = fis.read()) != -1) {
if (num % 2 != 0) { // 判断是否为奇数
fos.write(num);
}
}
fis.close();
fos.close();
// 读取exp5_2.txt中的所有偶数,写入exp5_4.txt中
FileReader fr = new FileReader("exp5_2.txt");
FileWriter fw = new FileWriter("exp5_4.txt");
int n;
while ((n = fr.read()) != -1) {
if (n % 2 == 0) { // 判断是否为偶数
fw.write(n);
}
}
fr.close();
fw.close();
}
}
```
3. 最后,使用File类的相关方法,遍历(1)、(2)两题所读写的文件所在的目录下的所有文件可以这样实现:
```java
import java.io.File;
public class Exp5_3 {
public static void main(String[] args) {
// 遍历exp5_1.txt所在目录下的所有文件
File file1 = new File("exp5_1.txt");
File dir1 = file1.getParentFile(); // 获取目录
System.out.println("exp5_1.txt所在目录下的所有文件:");
File[] files1 = dir1.listFiles(); // 获取目录下的所有文件
for (File f : files1) {
System.out.println(f.getName());
}
// 遍历exp5_2.txt所在目录下的所有文件
File file2 = new File("exp5_2.txt");
File dir2 = file2.getParentFile(); // 获取目录
System.out.println("exp5_2.txt所在目录下的所有文件:");
File[] files2 = dir2.listFiles(); // 获取目录下的所有文件
for (File f : files2) {
System.out.println(f.getName());
}
}
}
```
希望我的回答能够帮到你!