2017-11-19 34 views
0

기본적으로 파일에서 입력을 가져 오려고합니다. 예를 들어 는 :파일을 기본 표준 입력으로 지정

num=input() 

이 문 대신 키 안타를 기다리는 파일에서 입력을해야합니다. 표준 입력을 파일로 리다이렉션하여이를 수행하고 싶지는 않습니다. 기본적으로 필요합니다. 간단히 말해 키보드는 입력 장치의 기본 장치이므로 키보드 대신 입력 파일을 제공합니다.

+1

'입력'은 정의에 따라 표준 입력에서 읽는 것입니다. 파일을 표준 입력에 연결하지 않으려면'input'을 사용하고 싶지 않습니다. 'fileinput' 모듈을 사용해보십시오. – chepner

+1

파일에서 읽을 때'input'을 사용할 수 없습니다. –

+0

어떤 이유에서든'fileinput' 모듈을 사용하고 싶지 않다면'sys.stdin = open ("file")'경로를 사용하여 수동으로 다시 할당 해보십시오. 그리고 나서'input()'함수는 문자를 읽을 것입니다 그 파일에서. – martineau

답변

0

당신은이 같은 OS 수준에서 표준 입력에 파일을 첨부 할 수 있습니다

python script.py <input.txt 

을 스크립트에, 그것은 input()이 파일에서 사용자 유형 다음 줄 호출 될 때마다처럼 보일 것입니다.

+0

실제로 나는 자바에서 파이썬 스크립트를 실행 중입니다. 파일에서 입력을 리디렉션하지 않고 실행중인 경우 프로세스 p = Runtime.getRuntime(). exec ("python add.py"); 하지만 당신이 그 방법을 사용하지 않는 것이 좋습니다. 프로세스 p = Runtime.getRuntime(). exec ("python add.py

0

간단한 해결 방법.

def file_input(filename): 
    with open(filename, 'r') as f: 
     for line in f: 
      yield line 
_input_iterator = file_input('input.txt') 

def input_():    # replace input 
    return _input_iterator.next() 

전역 변수를 클래스로 묶거나 모듈로 만들지 않도록 할 수 있습니다.


나는 이것을 좋아하지 않지만 가능합니다. 정말 표준 입력을 교체하려면 stdin 그냥 파일, UNIX 모델

import sys 
sys.stdin = file('input.txt', 'r') 
input_line = input() 

(창에 그것을 tryied하지 않은 경우). pipe과 같은 유틸리티를 사용할 경우 stdin 하위 프로세스를 수정/리다이렉션합니다. 프로세스의 stdin이 상위 범위 (예 : 터미널)에서 수정되는 경우 더 편하게 느껴집니다. 그렇지 않으면 더 이상 '표준'처럼 보이지 않습니다.

+0

당신과 (그리고 OP)가'fileinput' [documention] (https://docs.python.org/3/library/fileinput.html#module-fileinput)을 살펴 보도록 제안하십시오. – martineau

+0

'fileinput'은 실제로 더 합리적입니다! 어쩌면 묻는 사람은 글로벌 이름'input'으로 붙어 있을지도 모릅니다. –