the*_*ech 11 python stdin pycharm
我正在尝试测试一个简单的代码,该代码使用Pycharm逐行读取文件.
for line in sys.stdin:
    name, _ = line.strip().split("\t")
    print name
我有我想要在同一目录中输入的文件:lib.txt
如何使用输入文件在Pycharm中调试我的代码?
小智 11
如果使用fileinput模块而不是尝试直接读取stdin,则可以解决此问题.
使用fileinput,如果脚本在参数中接收到文件名,它将按顺序从参数中读取.在您的情况下,将上面的代码替换为:
import fileinput
for line in fileinput.input():
    name, _ = line.strip().split("\t")
    print name
关于fileinput的好处是,如果没有提供参数(或者提供参数' - '),它默认为stdin.
现在,您可以创建运行配置并提供要用作stdin的文件的文件名作为脚本的唯一参数.
在此处阅读有关fileinput的更多信息
我一直试图找到一种方法在PyCharm中使用读取文件作为stdin.然而,包括喷气机大脑在内的大多数人都表示没有办法也没有支持,这是命令行的特征,与PyCharm本身无关.*https://intellij-support.jetbrains.com/hc/en-us/community/posts/206588305-How-to-redirect-standard-input-output-inside-PyCharm-
实际上,这个功能,读取文件作为标准输入,对于我来说,在某种程度上可以轻松提供输入来解决hackerank或acmicpc的编程问题.
我找到了一个简单的方法.我也可以使用input()从文件中提供stdin!
import sys
sys.stdin = open('input.in', 'r')
sys.stdout = open('output.out', 'w')
print(input())
print(input())
input.in示例:
hello world
This is not the world ever I have known
output.out示例:
hello world
This is not the world ever I have known
您需要创建自定义运行配置,然后将文件作为参数添加到“脚本参数”框中。有关分步指南,请参阅 Pycharm 的在线帮助。
但是,即使您这样做(正如您所发现的),您的问题也不会解决,因为您没有解析正确的命令行参数。
您需要改为使用argparse:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("filename", help="The filename to be processed")
args = parser.parse_args()
if args.filename:
    with open(filename) as f:    
        for line in f:
            name, _ = line.strip().split('\t')
            print(name)