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()).

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

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.