stdin에서 어떻게 읽습니까?


1470

코드 골프 도전 과제 중 일부를 수행하려고 하지만 모두 입력을 받아야합니다 stdin. 파이썬에서 어떻게 얻습니까?

답변:


950

fileinput모듈을 사용할 수 있습니다 :

import fileinput

for line in fileinput.input():
    pass

fileinput 명령 행 인수에 지정된 파일 이름으로 지정된 입력의 모든 행 또는 인수가 제공되지 않은 경우 표준 입력을 반복합니다.

참고 : line후행 줄 바꿈이 포함됩니다. 그것을 제거하기 위해line.rstrip()


1
@BorislavStoilov이 답변은 "또는 인수가 제공되지 않은 경우 표준 입력"이라는 질문에 올바르게 대답합니다.
— Dietmar

1
문서에 따르면 stdin으로 대체됩니다. "이것은 sys.argv [1 :]에 나열된 모든 파일의 행을 반복하며 목록이 비어 있으면 기본값은 sys.stdin입니다. 파일 이름이 '-'인 경우 파일 이름도 대체됩니다 다른 파일 이름 목록을 지정하려면 해당 파일 이름을 input ()의 첫 번째 인수로 전달하십시오. 단일 파일 이름도 허용됩니다. "
— Arlo

721

몇 가지 방법이 있습니다.

  • sys.stdin함수를 호출 read하거나 readlines모든 것을 읽거나 모든 것을 읽고 개행으로 자동 분할하려는 경우 파일과 같은 객체입니다 . ( import sys이 작업을 수행 해야합니다 .)

  • 당신이 할 경우 하라는 메시지가 사용자에게 입력, 당신이 사용할 수있는 raw_input파이썬 2.X에서, 그냥 input파이썬 3인치

  • 실제로 명령 줄 옵션 만 읽으려면 sys.argv 목록을 통해 액세스 할 수 있습니다 .

당신은 아마 찾을 수 파이썬에서 I / O에이 Wikibook 기사 뿐만 아니라 유용한 참고 자료가 될 수 있습니다.


445
import sys

for line in sys.stdin:
    print(line)

끝에 줄 바꿈 문자가 포함됩니다. 마지막에 개행을 제거하려면 line.rstrip()@brittohalloran이 말한대로 사용하십시오 .


7
line.rstrip ( '\ n'), 그렇지 않으면 모든 공백을 삭제합니다
— AVP

이 방법을 사용하면 입력 스트림이 언제 종료되는지 어떻게 알 수 있습니까? 마지막 줄을 제외한 모든 줄 뒤에 쉼표를 추가하고 싶습니다 .
— 중독

TypeError : 'FileWrapper'개체를 반복 할 수 없습니다.
— Diego Queiroz

@avp 이것은 \r\n줄 끝을 올바르게 처리하지 못합니다
— josch

228

파이썬은 또한 내장 함수 input()를 가지고 raw_input()있습니다. 내장 함수 아래의 Python 설명서를 참조하십시오 .

예를 들어

name = raw_input("Enter your name: ")   # Python 2.x

또는

name = input("Enter your name: ")   # Python 3

7
이것은 한 줄을 읽습니다. 이것은 실제로 OP가 요구 한 것이 아닙니다. 나는이 질문을 "열린 파일 핸들에서 EOF까지 여러 줄을 읽는 방법"으로 해석합니다.
— tripleee

4
OP는 키보드에서 입력을 읽을 것을 요구하지 않고, 콘테스트 상황에서 일반적으로 참가자에게 제공되는 표준 입력을 읽을 것을 요구하고 있습니다.
— chrisfs

이것이 내가 필요한 것입니다 .Google에서 나를 데려 왔습니다. 흥미롭게도 나는 RFID 태그, 날짜 시간, 데이터베이스를 코딩 관리하지만 사용자 lol에서 입력을 읽기 귀찮게하지 않았다 lol
— clockw0rk

204

다음은 Python 학습 의 내용입니다 .

import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."

유닉스에서는 다음과 같은 방법으로 테스트 할 수 있습니다.

% cat countlines.py | python countlines.py 
Counted 3 lines.

Windows 또는 DOS에서는 다음을 수행하십시오.

C:\> type countlines.py | python countlines.py 
Counted 3 lines.

4
다음은 파이썬에서 줄을 계산하는 더 메모리 효율적이고 더 빠른 방법 print(sum(chunk.count('\n') for chunk in iter(partial(sys.stdin.read, 1 << 15), '')))입니다. 참조wc-l.py
— JFS

11
의 사용 cat여기가 중복됩니다. 유닉스 시스템에 대한 올바른 호출은 python countlines.py < countlines.py입니다.
— istepaniuk

12
사용자에게 사용하도록 지시하는 데 "파이썬 학습"이 잘못되었습니다 readlines(). 파일 객체는 메모리의 모든 데이터를 구체화하지 않고 반복되도록 설계되었습니다.
— Aaron Hall

118

파이썬에서 stdin을 어떻게 읽습니까?

코드 골프 과제 중 일부를 수행하려고하지만 모두 입력을 stdin에서 가져와야합니다. 파이썬에서 어떻게 얻습니까?

당신이 사용할 수있는:

  • sys.stdin-파일과 같은 객체- sys.stdin.read()모든 것을 읽도록 호출 합니다.
  • input(prompt)-출력 할 옵션 프롬프트를 전달하면 stdin에서 첫 번째 줄 바꿈까지 읽습니다. 더 많은 라인을 얻으려면이 작업을 반복적으로 수행해야합니다. 입력이 끝나면 EOFError가 발생합니다. (아마도 골프에는 좋지 않습니다.) Python 2에서 이것은입니다 rawinput(prompt).
  • open(0).read()-Python 3에서 내장 함수 open는 파일 디스크립터 (운영 체제 IO 자원을 나타내는 정수)를 허용하며 0은의 디스크립터입니다 stdin. sys.stdin골프 와 같은 파일과 같은 객체를 반환합니다 . 파이썬 2에서 이것은입니다 io.open.
  • open('/dev/stdin').read()-와 비슷 open(0)하지만 Python 2 및 3에서는 작동하지만 Windows (또는 Cygwin)에서는 작동하지 않습니다.
  • fileinput.input()-에 나열된 모든 파일의 행에 대해 반복자를 반환 sys.argv[1:]하거나, 제공되지 않은 경우 stdin 처럼 사용하십시오 ''.join(fileinput.input()).

모두 sys와 fileinput물론, 각각 가져와야합니다.

sys.stdinPython 2 및 3, Windows, Unix와 호환되는 빠른 예제

예를 들어 데이터를 stdin으로 파이프하는 경우 readfrom 만하면 sys.stdin됩니다.

$ echo foo | python -c "import sys; print(sys.stdin.read())"
foo

우리는 이것이 sys.stdin기본 텍스트 모드 임을 알 수 있습니다 :

>>> import sys
>>> sys.stdin
<_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>

파일 예

파일이 있다고 가정하면 inputs.txt해당 파일을 수락하고 다시 쓸 수 있습니다.

python -c "import sys; sys.stdout.write(sys.stdin.read())" < inputs.txt

더 긴 답변

다음은 내장 함수 input( raw_inputPython 2에서 사용) 와의 두 가지 방법을 사용하여 완전하고 쉽게 복제 가능한 데모 sys.stdin입니다. 데이터가 수정되지 않았으므로 처리가 작동하지 않습니다.

우선 입력을위한 파일을 만들어 봅시다 :

$ python -c "print('foo\nbar\nbaz')" > inputs.txt

그리고 이미 본 코드를 사용하여 파일이 생성되었는지 확인할 수 있습니다.

$ python -c "import sys; sys.stdout.write(sys.stdin.read())" < inputs.txt 
foo
bar
baz

다음 sys.stdin.read은 Python 3 의 도움말입니다 .

read(size=-1, /) method of _io.TextIOWrapper instance
    Read at most n characters from stream.

    Read from underlying buffer until we have n characters or we hit EOF.
    If n is negative or omitted, read until EOF.

내장 함수 input( raw_inputPython 2)

내장 함수 input는 표준 입력에서 줄 바꿈까지 줄 바꿈 (줄 바꿈, print기본적으로 줄 바꿈을 추가 함) 까지 읽습니다 . 이는 EOF (파일 끝)에 도달 할 때까지 발생합니다 EOFError.

따라서 input파이썬 3 (또는 raw_input파이썬 2)에서 stdin에서 읽는 방법을 알려면 stdindemo.py라는 파이썬 모듈을 만듭니다.

$ python -c "print('try:\n    while True:\n        print(input())\nexcept EOFError:\n    pass')" > stdindemo.py 

예상대로 인쇄되도록 다시 인쇄 해 보겠습니다.

$ python -c "import sys; sys.stdout.write(sys.stdin.read())" < stdindemo.py 
try:
    while True:
        print(input())
except EOFError:
    pass

다시, input개행까지 읽을 수 있고 본질적으로 줄에서 그것을 제거합니다. print개행을 추가합니다. 따라서 둘 다 입력을 수정하는 동안 수정은 취소됩니다. (따라서 그들은 본질적으로 서로의 보완입니다.)

그리고 input파일 끝 문자를 가져 오면 EOFError가 발생하여 프로그램을 무시하고 종료합니다.

Linux / Unix에서는 cat에서 파이프 할 수 있습니다.

$ cat inputs.txt | python -m stdindemo
foo
bar
baz

또는 stdin에서 파일을 리디렉션 할 수 있습니다.

$ python -m stdindemo < inputs.txt 
foo
bar
baz

모듈을 스크립트로 실행할 수도 있습니다.

$ python stdindemo.py < inputs.txt 
foo
bar
baz

다음 input은 Python 3 의 기본 제공 도움말입니다 .

input(prompt=None, /)
    Read a string from standard input.  The trailing newline is stripped.

    The prompt string, if given, is printed to standard output without a
    trailing newline before reading input.

    If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
    On *nix systems, readline is used if available.

sys.stdin

여기서는를 사용하여 데모 스크립트를 sys.stdin만듭니다. 파일과 같은 객체를 반복하는 효율적인 방법은 파일과 같은 객체를 반복자로 사용하는 것입니다. 이 입력에서 stdout에 쓰는 보완적인 방법은 단순히 다음을 사용하는 것입니다 sys.stdout.write.

$ python -c "print('import sys\nfor line in sys.stdin:\n    sys.stdout.write(line)')" > stdindemo2.py

올바르게 인쇄되도록 다시 인쇄하십시오.

$ python -c "import sys; sys.stdout.write(sys.stdin.read())" < stdindemo2.py 
import sys
for line in sys.stdin:
    sys.stdout.write(line)

입력을 파일로 리디렉션합니다.

$ python -m stdindemo2 < inputs.txt
foo
bar
baz

명령에 골프 :

$ python -c "import sys; sys.stdout.write(sys.stdin.read())" < inputs.txt
foo
bar
baz

골프 용 파일 설명자

stdinand 의 파일 디스크립터는 stdout각각 0과 1이므로, open파이썬 3 에서도 파일 디스크립터를 전달할 수 있습니다 (2가 아니라 stdout에 쓰는 데 여전히 'w'가 필요함).

이것이 시스템에서 작동하면 더 많은 문자가 제거됩니다.

$ python -c "open(1,'w').write(open(0).read())" < inputs.txt
baz
bar
foo

파이썬 2 io.open도이 작업을 수행하지만 가져 오기에는 더 많은 공간이 필요합니다.

$ python -c "from io import open; open(1,'w').write(open(0).read())" < inputs.txt 
foo
bar
baz

다른 의견 및 답변 해결

한 의견은 ''.join(sys.stdin)골프를 제안 하지만 실제로는 sys.stdin.read ()보다 길다-파이썬은 메모리에 추가 목록을 만들어야합니다 (목록을 str.join제공하지 않으면 작동 하는 방식).

''.join(sys.stdin)
sys.stdin.read()

최고 답변은 다음과 같습니다.

import fileinput

for line in fileinput.input():
    pass

그러나 sys.stdin반복자 프로토콜을 포함하여 파일 API를 구현하므로 다음과 동일합니다.

import sys

for line in sys.stdin:
    pass

또 다른 대답 은 이것을 제안합니다. 그냥 당신이 통역에 그것을 할 경우, 당신이해야 할 것이라는 점을 기억 Ctrl- d당신이 리눅스 또는 Mac에 있다면, 또는 Ctrl- zWindows에서 (후 Enter프로세스에 파일 끝 문자를 보낼 수). 또한 그 대답은 대신 최종 사용에 print(line)a '\n'를 추가하는 것을 제안 print(line, end='')합니다 (Python 2의 경우 필요합니다 from __future__ import print_function).

실제 사용 사례 fileinput는 일련의 파일을 읽는 것입니다.


103

다른 사람들이 제안한 답변 :

for line in sys.stdin:
  print line

는 매우 단순하고 pythonic이지만 스크립트는 입력 행에서 반복을 시작하기 전에 EOF까지 기다립니다.

이는 tail -f error_log | myscript.py예상대로 라인을 처리하지 않음을 의미합니다 .

이러한 사용 사례에 대한 올바른 스크립트는 다음과 같습니다.

while 1:
    try:
        line = sys.stdin.readline()
    except KeyboardInterrupt:
        break

    if not line:
        break

    print line

업데이트
의견에서 파이썬 2에는 버퍼링 만있을 수 있으므로 인쇄 호출이 발행되기 전에 버퍼가 채워지거나 EOF가 될 때까지 기다리게됩니다.


8
for line in sys.stdin:패턴은 하지 않습니다 EOF 기다립니다. 그러나 매우 작은 파일을 테스트하면 응답이 버퍼링 될 수 있습니다. 더 많은 데이터로 테스트하여 중간 결과를 읽는지 확인하십시오.
— mb.

파이썬 2.6.6을 사용할 때 스트림에서 입력을받을 때 파일 끝 또는 버퍼링을 기다리지 만 3.1.3에서는 그렇지 않습니다. 참고 print line는 3.1.3에서 깨어 났지만 print(line)그렇지 않습니다.
— ctrl-alt-delor

내 python 2.7.5 "sys.stdin의 행"에 대해 EOF 또는 적절한 양의 데이터가 버퍼링 될 때까지 차단합니다. 스트림 처리에 적합합니다. 라인 별 처리 또는 사용자 입력에는 적합하지 않습니다.
— Sean

2
나는 이것이 libc에서 tty 감지와 관련이 있다고 생각하므로 파이프 할 때 대화 형 쉘에서 감지하지 않습니다. 그것이 그것을 전달하는 방법이라고 생각합니다)
— Mâtt Frëëman

8
@Sean : 잘못되었습니다 . for line in sys.stdin:"EOF까지 차단"하지 않습니다. 이 파이썬 2의 미리 읽기 버그 해당 버퍼가 가득 찰 때까지 라인을 지연. EOF와 관련이없는 버퍼링 문제입니다. 이 문제를 해결하려면 for line in iter(sys.stdin.readline, ''):( io.open()일반 파일에 사용) 을 사용 하십시오. 파이썬 3에서는 필요하지 않습니다.
— jfs

39

표준 입력을 표준 출력으로 에코합니다.

import sys
line = sys.stdin.readline()
while line:
    print line,
    line = sys.stdin.readline()

31

를 사용하여 모든 anwers를 빌드 sys.stdin하면 적어도 하나의 인수가 존재하면 인수 파일에서 읽기 위해 다음과 같은 작업을 수행하고 그렇지 않으면 stdin으로 대체 할 수 있습니다.

import sys
f = open(sys.argv[1]) if len(sys.argv) > 1 else sys.stdin    
for line in f:
#     Do your stuff

그리고 그것을 어느 하나로 사용하십시오

$ python do-my-stuff.py infile.txt

또는

$ cat infile.txt | python do-my-stuff.py

또는

$ python do-my-stuff.py < infile.txt

즉 같은 많은 GNU / 유닉스 프로그램처럼 파이썬 스크립트 동작합니다을 만들 것 cat, grep하고 sed.


17

argparse 쉬운 해결책입니다

Python 버전 2 및 3과 호환되는 예제

#!/usr/bin/python

import argparse
import sys

parser = argparse.ArgumentParser()

parser.add_argument('infile',
                    default=sys.stdin,
                    type=argparse.FileType('r'),
                    nargs='?')

args = parser.parse_args()

data = args.infile.read()

이 스크립트는 여러 가지 방법으로 실행할 수 있습니다.

1. 사용 stdin

echo 'foo bar' | ./above-script.py

  또는 here string 으로 대체 echo하여 더 짧습니다 .

./above-script.py <<< 'foo bar'

2. 파일 이름 인수 사용

echo 'foo bar' > my-file.data
./above-script.py my-file.data

3. stdin특별한 파일 이름을 통한 사용-

echo 'foo bar' | ./above-script.py -

입력 파일이 압축 된 경우 수행 할 작업에 대한 답변은 다음과 같습니다. stackoverflow.com/a/33621549/778533 또한 add_argument('--in'스크립트로 파이프 --in -하고 명령 행에 추가 할 수 있습니다. PS in는 변수 / 속성에 대한 좋은 이름이 아닙니다.
— tommy.carstensen

in변수의 나쁜 이름 일뿐 아니라 불법입니다. 예약 키워드로 args.in.read()인해 InvalidSyntax 오류가 발생 in합니다. infilepython argparse 문서처럼 간단히 이름을 바꿀 수 있습니다 : docs.python.org/3/library/…
— Ken Colton

의견을 보내 주셔서 감사합니다. @ tommy.carstensen, 답변이 개선되었습니다. Merry Christmas and Happy New Year ;-)
— 올리버

14

다음 코드 칩이 도움이 될 것입니다 (stdin 블로킹을 모두 to EOF하나의 문자열로 읽습니다 ).

import sys
input_str = sys.stdin.read()
print input_str.split()

8

나는 지금까지 아무도이 핵을 언급하지 않은 것에 놀랐다.

python -c "import sys; set(map(sys.stdout.write,sys.stdin))"

python2에서 set()전화를 끊을 수는 있지만 어느 쪽이든 말입니다.


1
왜 사용 readlines 그 줄을 여러 줄로 나누고 join다시 사용합니까? 당신은 그냥 쓸 수 있습니다print(sys.stdin.read())
— musiphil

파이썬은 여분의 배열을 만들어야하기 때문에 필요한 것보다 많은 메모리를 사용합니다.
— Harry Moreno

글쎄, 실제로 write는 반환 하지 않기 때문에 None설정 크기는 절대로 1 ( =len(set([None]))) 보다 클 수 없습니다.
— Uri Goren

7

이 시도:

import sys

print sys.stdin.read().upper()

확인하십시오 :

$ echo "Hello World" | python myFile.py

7

stdin에서 읽은 후 다음과 같이 입력을 "데이터"에 저장할 수 있습니다 .

data = ""
for line in sys.stdin:
    data += line


data = sys.stdin.read()반복되는 문자열 연결 문제없이 으로 동일한 작업을 수행 할 수 있습니다 .
— musiphil

6

에서 읽기 sys.stdin, 그러나 Windows 에서 이진 데이터 를 읽으려면sys.stdin 텍스트 모드에서 열리고 손상 될 수 있으므로주의해야합니다.\r\n 로 대체 \n.

해결 방법은 Windows + Python 2가 감지되면 Python 3을 사용하여 모드를 이진으로 설정하는 것 sys.stdin.buffer입니다.

import sys

PY3K = sys.version_info >= (3, 0)

if PY3K:
    source = sys.stdin.buffer
else:
    # Python 2 on Windows opens sys.stdin in text mode, and
    # binary data that read from it becomes corrupted on \r\n
    if sys.platform == "win32":
        # set sys.stdin to binary mode
        import os, msvcrt
        msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
    source = sys.stdin

b = source.read()

4

다음 방법을 사용하면 stdin에서 문자열을 반환합니다 (json 파싱에 사용합니다). Windows에서 파이프 및 프롬프트와 함께 작동합니다 (Linux에서는 아직 테스트되지 않음). 메시지가 표시되면 두 줄 바꿈이 입력 끝을 나타냅니다.

def get_from_stdin():

  lb = 0
  stdin = ''

  for line in sys.stdin:
    if line == "\n":
        lb += 1
        if lb == 2:
            break
    else:
        lb = 0
        stdin += line

  return stdin

3

내가 해결해야 할 문제

import sys

for line in sys.stdin:
    print(line)

stdin에 데이터를 전달하지 않으면 영원히 차단됩니다. 그래서 나는 이 대답을 좋아 합니다 : stdin에 데이터가 있는지 먼저 확인한 다음 읽으십시오. 이것이 내가 한 일입니다.

import sys
import select

# select(files to read from, files to write to, magic, timeout)
# timeout=0.0 is essential b/c we want to know the asnwer right away
if select.select([sys.stdin], [], [], 0.0)[0]:
    help_file_fragment = sys.stdin.read()
else:
    print("No data passed to stdin", file=sys.stderr)
    sys.exit(2)

그래도이 끔찍한 조건을 메소드에 숨기는 것이 좋습니다.
— tiktak

1
이 방법은 프로그램의 적용 가능성을 심각하게 제한합니다. 예를 들어, select호출 될 때 입력이 거의 "준비"되지 않기 때문에 터미널에서 대화식 입력에이 기능을 사용할 수 없습니다 . stdin이 느린 매체 (네트워크, CD, 테이프 등)의 파일에 연결된 경우에도 문제가 발생할 수 있습니다. "데이터를 stdin으로 전달하지 않으면 영구적으로 차단됩니다." A는 문제가 있지만, 나는 그것이 말할 것이 특징 . 대부분의 CLI 프로그램 (예 cat:)은이 방식으로 작동하며 예상됩니다. EOF는 입력의 끝을 감지하기 위해 의존해야하는 유일한 것입니다.
— musiphil

2

파이프를 통해 소켓을 읽는 데 도움이되는 문제가있었습니다. 소켓이 닫히면 활성 루프에서 빈 문자열을 반환하기 시작했습니다. 그래서 이것은 나의 해결책입니다 (Linux에서만 테스트되었지만 다른 모든 시스템에서 작동하기를 바랍니다)

import sys, os
sep=os.linesep

while sep == os.linesep:
    data = sys.stdin.readline()               
    sep = data[-len(os.linesep):]
    print '> "%s"' % data.strip()

따라서 소켓에서 청취를 시작하면 제대로 작동합니다 (예 : bash에서).

while :; do nc -l 12345 | python test.py ; done

그리고 텔넷으로 호출하거나 브라우저를 localhost를 가리킬 수 있습니다.


1

이것을 고려하면:

for line in sys.stdin:

방금 python 2.7 (다른 사람의 제안에 따라)에서 매우 큰 파일을 시도했지만 위에서 언급 한 이유로 정확하게 권장하지 않습니다 (오랫 동안 아무 일도 일어나지 않습니다).

나는 약간 더 많은 pythonic 솔루션으로 끝났습니다 (그리고 더 큰 파일에서 작동합니다).

with open(sys.argv[1], 'r') as f:
    for line in f:

그런 다음 스크립트를 로컬로 실행할 수 있습니다.

python myscript.py "0 1 2 3 4..." # can be a multi-line string or filename - any std.in input will work

질문과 같이 파일을 여는 것은 stdin에서 읽지 않습니다. -1
— Aaron Hall

이 경우 sys.stdin스크립트에 명령 행 인수로 전달합니다.
— szeitlin

1
sys.stdin스크립트에 명령 줄 인수로 어떻게 전달할 수 있습니까? 인수는 문자열이고 스트림은 파일과 같은 객체이며 동일하지 않습니다.
— DeFazer

@DeFazer가 사용법을 보여주기 위해 편집했습니다. 인수 예, 문자열,하지만 위의 이전 코멘트에서 언급 한 파이썬 문서로하고, sys.stdin파일 - 류의 객체 인
— szeitlin

1

들어 파이썬 3 이 될 것이라고 :

# Filename e.g. cat.py
import sys

for line in sys.stdin:
    print(line, end="")

기본적으로 간단한 형식의 cat (1)입니다. 각 줄 뒤에 줄 바꿈을 추가하지 않기 때문입니다. 다음을 사용하여 파일 실행 파일을 표시 한 후 이것을 사용할 수 있습니다 chmod +x cat.py.

echo Hello | ./cat.py

0

이 os.read(0, x) 표준 입력을 나타내는 0에서 xbytes을 읽는. 이것은 버퍼링되지 않은 읽기로 sys.stdin.read ()보다 낮은 수준입니다.


0

사용하는 경우 -c대신 독서, 까다로운 방법으로 명령하면 stdin(어떤 경우에는 더 유연한) 당신은 시작 괄호 내에서 따옴표로 판매 명령을 넣어 당신의 파이썬 명령에뿐만 아니라 쉘 스크립트 명령을 전달할 수 있습니다 $로그인합니다.

예 :

python3 -c "import sys; print(len(sys.argv[1].split('\n')))" "$(cat ~/.goldendict/history)"

이것은 goldendict의 히스토리 파일에서 줄 수를 계산합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.