Pycharm을 사용하여 파일을 한 줄씩 읽는 간단한 코드를 테스트하려고합니다. Pycharm에서 sys.stdin을 사용하여 파일 읽기
for line in sys.stdin:
name, _ = line.strip().split("\t")
print name
나는 같은 디렉토리에 입력 내가 원하는 파일이 있습니다
lib.txt 어떻게 입력 파일로 Pycharm 내 코드를 디버깅 할 수 있습니까?
Pycharm을 사용하여 파일을 한 줄씩 읽는 간단한 코드를 테스트하려고합니다. Pycharm에서 sys.stdin을 사용하여 파일 읽기
for line in sys.stdin:
name, _ = line.strip().split("\t")
print name
나는 같은 디렉토리에 입력 내가 원하는 파일이 있습니다
lib.txt 어떻게 입력 파일로 Pycharm 내 코드를 디버깅 할 수 있습니까?
사용자 지정 실행 구성을 만든 다음 "스크립트 매개 변수"상자에 파일을 인수로 추가해야합니다. 단계별 가이드는 Pycharm의 online help을 참조하십시오.
그러나 사용자가 발견 한 경우에도 올바른 명령 줄 인수를 구문 분석하지 않기 때문에 문제가 작동하지 않습니다.
는 대신argparse
를 사용해야합니다 : 당신이 표준 입력을 직접 읽는 것보다 오히려 fileinput 함수 모듈을 사용하는 경우
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)
당신은이 문제를 해결할 수 있습니다.
fileinput을 사용하면 스크립트가 인수에서 파일 이름을 받으면 순서대로 인수에서 읽습니다. 귀하의 경우와 위의 코드를 대체 : fileinput 함수에 대한
import fileinput
for line in fileinput.input():
name, _ = line.strip().split("\t")
print name
의 좋은 점은 인수가 제공되지 않은 경우 기본값은 표준 입력이다 (또는 인수가있는 경우 '-'공급).
이제 실행 구성을 만들고 stdin으로 사용할 파일의 파일 이름을 스크립트의 유일한 인수로 제공 할 수 있습니다.
더 읽기에 대해 내가 PyCharm의 표준 입력으로 읽을 파일을 사용하는 방법을 찾기 위해 노력 해왔다 fileinput here
. 그러나 제트 두뇌를 포함한 대부분의 사람들은 PyCharm 자체와 관련이없는 커맨드 라인의 특징은 지원할 방법이 없다고 말했습니다. * https://intellij-support.jetbrains.com/hc/en-us/community/posts/206588305-How-to-redirect-standard-input-output-inside-PyCharm-
실제로이 기능은 hdkerc 또는 acmicpc의 프로그래밍 문제를 해결하기위한 입력을 쉽게하기 위해 stdin으로 파일을 읽는 것이 필수적입니다.
나는 간단한 방법을 발견했다. input()을 사용하여 파일에서 stdin을 얻을 수도 있습니다!
import sys
sys.stdin = open('input.in', 'r')
sys.stdout = open('output.out', 'w')
print(input())
print(input())
예를 input.in :
예를 output.outhello world
This is not the world ever I have known
:
hello world
This is not the world ever I have known
유연성을 위해, 당신은 파이썬 스크립트를 작성할 수 있습니다 항상 표준 입력에서 읽은 다음 명령 리디렉션을 사용하는 파일에서 읽는 방법 :
$ python myscript.py < file.txt
그러나 필자가 알 수있는 한, PyCharm에서 리디렉션을 사용할 수 없으므로 실행 구성에서 허용하지 않습니다.
또는, 명령 줄 인수로 파일 이름을 받아 들일 수 :
$ python myscript.py file.txt
이 처리하는 방법은 여러 가지가 있습니다. 나는이 상황에 대해 argparse
이 과도하다고 생각한다. 다른 방법으로, sys.argv
직접 명령 줄 인수에 액세스 할 수 있습니다
import sys
filename = sys.argv[1]
with open(filename) as f:
for line in f:
name, _ = line.strip().split('\t')
print(name)
을 강력한 코드의 경우, 올바른 수의 인수가 제공되는 것을 확인할 수 있습니다. 내 코드를 실행하면
나는 출력 창에 얻을 : 는/usr/빈/파이썬은 /home/training/PycharmProjects/pp12/main.py는 을 purch.txt하지만 아무것도 내가로드 할 때 동일한 코드가 작동 (발생하지 file with f1 = open ('purch.txt') – thecheech
[명령 줄 인수를 구문 분석하는 방법] (http://docs.python.org/2/library/optparse.html)을 읽어야합니다. –