Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading from a file with sys.stdin in Pycharm

I am trying to test a simple code that reads a file line-by-line with Pycharm.

for line in sys.stdin:
    name, _ = line.strip().split("\t")
    print name

I have the file I want to input in the same directory: lib.txt

How can I debug my code in Pycharm with the input file?

like image 670
thecheech Avatar asked Feb 07 '14 14:02

thecheech


People also ask

How do I open a stdin file in Python?

Use fileinput. We can use the fileinput module to read from stdin in Python. fileinput. input() reads through all the lines in the input file names specified in command-line arguments. If no argument is specified, it will read the standard input provided.

Which method allows us to read data from the standard input stdin?

The readAll() method reads all remaining input on standard input and returns it as a string. As an example, the following code fragment reads all of the remaining tokens from standard input and returns them as an array of strings. String[] words = StdIn.

How do I input a file in Pycharm?

You can use the Run/Debug Configuration dialog to automatically submit input values from a text file instead of typing them in the Run tool window. To enable redirecting, select the Redirect input from checkbox and specify the path to the in. txt file. Save the Run/Debug configuration and run it.


2 Answers

You can work around this issue if you use the fileinput module rather than trying to read stdin directly.

With fileinput, if the script receives a filename(s) in the arguments, it will read from the arguments in order. In your case, replace your code above with:

import fileinput
for line in fileinput.input():
    name, _ = line.strip().split("\t")
    print name

The great thing about fileinput is that it defaults to stdin if no arguments are supplied (or if the argument '-' is supplied).

Now you can create a run configuration and supply the filename of the file you want to use as stdin as the sole argument to your script.

Read more about fileinput here

like image 197
sean Avatar answered Sep 21 '22 08:09

sean


I have been trying to find a way to use reading file as stdin in PyCharm. However, most of guys including jet brains said that there is no way and no support, it is the feature of command line which is not related PyCharm itself. * https://intellij-support.jetbrains.com/hc/en-us/community/posts/206588305-How-to-redirect-standard-input-output-inside-PyCharm-

Actually, this feature, reading file as stdin, is somehow essential for me to ease giving inputs to solve a programming problem from hackerank or acmicpc.

I found a simple way. I can use input() to give stdin from file as well!

import sys
sys.stdin = open('input.in', 'r')
sys.stdout = open('output.out', 'w')

print(input())
print(input())

input.in example:

hello world
This is not the world ever I have known

output.out example:

hello world
This is not the world ever I have known
like image 30
bruce Avatar answered Sep 20 '22 08:09

bruce