You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过自定义输入运行读取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:57:28