Python 打开一个文件查找所有行看是否有EMU,如果有保存这一行如果没有删除,输出新的文件
时间: 2023-06-26 10:08:52 浏览: 36
可以使用以下代码实现:
```python
with open("filename.txt", "r") as f:
lines = f.readlines()
filtered_lines = []
for line in lines:
if "EMU" in line:
filtered_lines.append(line)
with open("newfile.txt", "w") as f:
f.writelines(filtered_lines)
```
首先,使用 `with open()` 语句打开需要查找的文件,并读取所有行。接着,遍历每一行,如果该行包含 "EMU",则将其保存到 `filtered_lines` 列表中。最后,使用 `with open()` 语句创建一个新的文件,并将筛选出来的行写入该文件。新的文件名为 "newfile.txt",可以根据需要更改。
相关问题
emu8086用BIOS和DOS的调用编程完成将一个文件复制到另一个文件中。要求文件名从键盘输入
以下是一个简单的示例程序,使用emu8086汇编语言,从键盘输入两个文件名,然后将一个文件复制到另一个文件中。
```
org 100h
section .data
; 用于存储文件名和相关信息的变量
src_file db 80, 0 ; 源文件名
dst_file db 80, 0 ; 目标文件名
buffer db 512 ; 缓冲区,用于存储文件内容
section .text
; 程序入口
mov ah, 0Ah ; 从键盘读取字符串
mov dx, src_file ; 存储输入到src_file变量中
int 21h
mov ah, 0Ah ; 从键盘读取字符串
mov dx, dst_file ; 存储输入到dst_file变量中
int 21h
; 打开源文件
mov ah, 3Dh ; 打开文件
mov al, 0 ; 只读方式打开
mov dx, src_file ; 源文件名
int 21h
mov bx, ax ; 存储源文件句柄
; 创建或覆盖目标文件
mov ah, 3Ch ; 创建或覆盖文件
mov al, 0 ; 读/写方式打开
mov cx, 0 ; 属性为0
mov dx, dst_file ; 目标文件名
int 21h
mov dx, ax ; 存储目标文件句柄
; 从源文件中读取内容,并写入目标文件
mov ah, 3Fh ; 读取文件内容
mov bx, ax ; 源文件句柄
mov cx, 512 ; 一次最多读取512个字节
mov dx, buffer ; 缓冲区地址
mov ah, 3Fh ; 读取文件内容
int 21h
mov bx, dx ; 目标文件句柄
mov cx, ax ; 读取的字节数
mov dx, buffer ; 缓冲区地址
mov ah, 40h ; 写入文件内容
int 21h
; 关闭文件
mov ah, 3Eh ; 关闭文件
mov bx, ax ; 源文件句柄
int 21h
mov bx, dx ; 目标文件句柄
int 21h
; 程序结束
mov ah, 4Ch ; 退出程序
int 21h
```
请注意,此程序中使用的文件操作函数是DOS API,需要运行在DOS环境下。如果您正在Windows等操作系统上运行此程序,建议使用DOS模拟器,例如DOSBox。
在emu8086中如何用键盘输入任意一个十进制数并保存在变量x中
在emu8086中,可以使用`int 21h`中断来接收键盘输入。以下是一个示例代码,演示如何接收一个十进制数并将其保存在变量x中:
```
.MODEL SMALL
.STACK 100H
.DATA
x DW ? ;定义一个字变量x,用于保存输入的数值
.CODE
MAIN PROC
MOV AX, @DATA ;初始化数据段寄存器
MOV DS, AX
;显示提示信息
MOV AH, 09H
LEA DX, msg
INT 21H
;接收键盘输入
MOV AH, 01H
INT 21H
;将字符转换为数字
SUB AL, '0'
MOV BL, AL
;循环接收输入,直到输入回车
LOOP_INPUT:
MOV AH, 01H
INT 21H
;如果输入为回车,则退出循环
CMP AL, 0DH
JE EXIT_INPUT
;将字符转换为数字并累加到x中
SUB AL, '0'
MOV CL, 10
MUL CL
ADD BL, AL
JMP LOOP_INPUT
EXIT_INPUT:
;将结果保存到x中
MOV x, BX
;显示输入的数值
MOV AH, 09H
LEA DX, output_msg
INT 21H
;结束程序
MOV AH, 4CH
INT 21H
msg DB '请输入一个十进制数(以回车结束):$'
output_msg DB '您输入的数值为:$'
MAIN ENDP
END MAIN
```
在这个示例代码中,我们首先使用`int 21h`中断来显示一个提示信息,然后使用`int 21h`中断接收键盘输入,并将输入的字符转换为数字。我们使用循环来接收多个字符,并将它们累加到变量x中,直到输入回车为止。最后,我们将x中保存的数值显示出来,然后结束程序。