python - 输入被删除时如何读取行
问题描述
所以在我的linux终端中我输入python3 main.py input.txt > output.txt
input.txt 包含:
This is line 1
This is line 2
This is another line
如何逐行浏览并打印出每一行,以便我output.txt
看起来像下面的输出?本质上,我只是在问我如何逐行阅读?我不能使用fopen
,因为我正在input.txt
像我的标准输入一样制作
This is line 1
---
This is line 2
---
This is another line
---
我的问题与其他问题不同,因为这里我没有使用open()
. 我将标准输入输入为input.txt
. 正如您在命令中看到的那样input.txt > output.txt
。所以我不能使用open。
解决方案
使用此命令行,python3 main.py input.txt > output.txt
这将执行您想要的操作:
import sys
for line in open(sys.argv[1]):
print(line.rstrip('\n'))
print('---')
但是,您的 shell 语法很混乱。您希望input.txt
连接到标准输入,但会这样写python3 main.py < input.txt > output.txt
(注意小于号<
)。然后你main.py
会看起来像这样:
import fileinput
for line in fileinput.input():
print(line.rstrip('\n'))
print('---')
在这里,我fileinput
用来遍历标准输入的每一行。
顺便说一句,fileinput
可以从中获取文件名列表sys.argv
,因此这也适用于命令行python3 main.py input.txt > output.txt
。
推荐阅读
- java - 如何处理首选项(PreferenceFragment)中自定义项目的点击事件?
- vue.js - 无法在 Vue.js 中将对象属性设置为反应式
- saml - Idp 发起 SAML 维持系统
- regex - MariaDB 中的正则表达式替换
- javascript - 使用javascript从上到下获取json数据
- c# - 由于逆变,参数不可赋值
- laravel - 无法将图像数据写入路径图像干预laravel
- python - python qrcode中的多个值
- mysql - 无法使用mysql将strapi部署到Heroku
- c++ - C++ OpenSSL 1.0 迁移到 3.0