如何通过自定义输入运行读取sys.stdin的Python代码?
问题解决:如何用自定义输入运行你的Python脚本
你的代码是从**标准输入(stdin)**读取内容,而非读取命令行参数,所以之前的运行方式都不生效,下面是正确的使用方法和可选改进方案:
一、正确运行现有代码的方式
你的脚本会等待从标准输入流读取内容,可通过以下几种方式提供输入:
- 交互式输入:
执行命令后手动输入内容,结束时按对应系统的终止键:python3 test.py # 输入ABCD并回车,再按Ctrl+D(Linux/macOS)或Ctrl+Z(Windows)结束输入 - 管道传递输入:
用echo将内容通过管道直接传给脚本:echo ABCD | python3 test.py - 重定向文件内容作为输入:
将文件内容导入标准输入流:python3 test.py < ABCD.txt
二、可选改进:支持直接传参数或文件名
如果希望脚本能直接接受命令行参数(字符串或文件名),可修改代码如下:
import sys output = [] # 处理命令行参数 if len(sys.argv) > 1: arg = sys.argv[1] try: # 优先尝试读取文件 with open(arg, 'r') as f: content = f.read() except FileNotFoundError: # 若不是文件,将参数当作输入内容 content = arg # 筛选目标字符 for c in content: if c in 'ABCD': output.append(c) else: # 保留原逻辑:读取标准输入 for ln in sys.stdin: for c in ln: if c in 'ABCD': output.append(c) sys.stdout.write(''.join(output) + '\n')
修改后即可支持你最初尝试的两种运行方式:
# 直接传入字符串 python3 test.py ABCD # 传入文件名 python3 test.py ABCD.txt
内容的提问来源于stack exchange,提问作者beepboopbeep
相关产品推荐
相关产品推荐

