जवाबों:
आप fileinput
मॉड्यूल का उपयोग कर सकते हैं :
import fileinput
for line in fileinput.input():
pass
fileinput
कमांड-लाइन तर्कों में दिए गए फ़ाइल नामों के रूप में निर्दिष्ट इनपुट में सभी लाइनों के माध्यम से लूप होगा, या कोई तर्क नहीं दिए जाने पर मानक इनपुट।
नोट: line
एक अनुगामी newline शामिल होगा; इसे हटाने के लिएline.rstrip()
इसे करने के कुछ तरीके हैं।
sys.stdin
एक फाइल की तरह वस्तु है जिस पर आप फ़ंक्शंस कॉल कर सकते हैं read
या readlines
यदि आप सब कुछ पढ़ना चाहते हैं या आप सब कुछ पढ़ना चाहते हैं और स्वचालित रूप से न्यूलाइन द्वारा विभाजित करना चाहते हैं। ( import sys
इसके लिए आपको काम करने की आवश्यकता है ।)
यदि आप उपयोगकर्ता को इनपुट के लिए संकेत देना चाहते हैं , तो आप raw_input
Python 2.X, और केवल input
Python 3 में उपयोग कर सकते हैं ।
यदि आप वास्तव में केवल कमांड-लाइन विकल्प पढ़ना चाहते हैं, तो आप उन्हें sys.argv सूची के माध्यम से एक्सेस कर सकते हैं ।
पायथन में I / O पर आपको यह विकीबूक लेख संभवतः उपयोगी संदर्भ के रूप में मिलेगा ।
import sys
for line in sys.stdin:
print(line)
ध्यान दें कि इसमें अंत में एक नया वर्ण शामिल होगा। अंत में newline को निकालने के लिए, line.rstrip()
@brittohalloran के रूप में उपयोग करें ।
\r\n
लाइन अंत के साथ सही ढंग से नहीं निपटेंगे
पायथन में भी अंतर्निहित कार्य input()
और हैं raw_input()
। अंतर्निहित कार्यों के तहत पायथन प्रलेखन देखें ।
उदाहरण के लिए,
name = raw_input("Enter your name: ") # Python 2.x
या
name = input("Enter your name: ") # Python 3
यहाँ लर्निंग पायथन से है :
import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."
यूनिक्स पर, आप कुछ ऐसा करके इसका परीक्षण कर सकते हैं:
% cat countlines.py | python countlines.py
Counted 3 lines.
विंडोज या डॉस पर, आप करेंगे:
C:\> type countlines.py | python countlines.py
Counted 3 lines.
print(sum(chunk.count('\n') for chunk in iter(partial(sys.stdin.read, 1 << 15), '')))
:। देखेंwc-l.py
cat
बेमानी है। यूनिक्स सिस्टम के लिए सही मंगलाचरण है python countlines.py < countlines.py
।
readlines()
। फ़ाइल ऑब्जेक्ट्स को मेमोरी में सभी डेटा को भौतिक किए बिना अधिक से अधिक पुनरावृत्त करने का इरादा है।
आप पायथन में स्टड से कैसे पढ़ते हैं?
मैं कुछ कोड गोल्फ चुनौतियों को करने की कोशिश कर रहा हूं, लेकिन उन सभी को इनपुट को स्टड से लेने की आवश्यकता है। पायथन में मुझे वह कैसे मिलेगा?
आप उपयोग कर सकते हैं:
sys.stdin
- एक फ़ाइल की तरह वस्तु - sys.stdin.read()
सब कुछ पढ़ने के लिए कॉल करें ।input(prompt)
- इसे आउटपुट के लिए एक वैकल्पिक प्रॉम्प्ट पास करें, यह स्टड से पहली न्यूलाइन तक पढ़ता है, जो इसे स्ट्रिप्स करता है। आपको अधिक लाइनें प्राप्त करने के लिए इसे बार-बार करना होगा, इनपुट के अंत में यह EOFError बढ़ाता है। (शायद गोल्फ के लिए महान नहीं है।) पायथन 2 में, यह है rawinput(prompt)
।open(0).read()
- पायथन 3 में, अंतर्निहित फ़ंक्शन फ़ाइल डिस्क्रिप्टर (ऑपरेटिंग सिस्टम IO संसाधनों का प्रतिनिधित्व करने वाले पूर्णांक) को open
स्वीकार करता है , और 0 का डिस्क्रिप्टर है । यह एक फ़ाइल जैसी वस्तु लौटाता है जैसे - शायद गोल्फ के लिए आपका सबसे अच्छा दांव। पायथन 2 में, यह है ।stdin
sys.stdin
io.open
open('/dev/stdin').read()
- के समान open(0)
, पायथन 2 और 3 पर काम करता है, लेकिन विंडोज (या सिग्विन) पर भी नहीं।fileinput.input()
- sys.argv[1:]
अगर या नहीं दिए गए हैं, या स्टड में सूचीबद्ध सभी फाइलों में लाइनों पर एक पुनरावृत्ति देता है । का उपयोग करें ''.join(fileinput.input())
।दोनों sys
और fileinput
आयातित किया जाना चाहिए, क्रमशः, निश्चित रूप से।
sys.stdin
पायथन 2 और 3, विंडोज, यूनिक्स के साथ संगत त्वरित उदाहरणतुम बस करने की जरूरत read
से sys.stdin
अगर आप पाइप डेटा 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_input
पायथन 2 में उपयोग ), और का उपयोग करते हुए एक पूर्ण, आसानी से नकल करने योग्य डेमो है , और sys.stdin
। डेटा unmodified है, इसलिए प्रसंस्करण एक गैर-संचालन है।
शुरुआत करने के लिए, चलिए इनपुट्स के लिए एक फाइल बनाते हैं:
$ 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
अजगर 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_input
पायथन 2 में)अंतर्निहित फ़ंक्शन input
मानक इनपुट से एक नई लाइन तक पढ़ता है, जिसे छीन लिया जाता है (पूरक होता है print
, जो डिफ़ॉल्ट रूप से एक नई पंक्ति जोड़ता है।) यह तब तक होता है जब तक कि यह ईओएफ (फ़ाइल का अंत) नहीं हो जाता है, जिस बिंदु पर यह उठता है EOFError
।
इस प्रकार, यहां बताया गया है कि आप स्टैडन से पढ़ने के लिए input
पायथन 3 (या raw_input
पायथन 2 में) का उपयोग कैसे कर सकते हैं - इसलिए हम एक पायथन मॉड्यूल बनाते हैं जिसे हम 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 को उठाता है, जिसे हम अनदेखा करते हैं और फिर प्रोग्राम से बाहर निकलते हैं।
और लिनक्स / यूनिक्स पर, हम बिल्ली से पाइप कर सकते हैं:
$ cat inputs.txt | python -m stdindemo
foo
bar
baz
या हम सिर्फ फ़ाइल को स्टड से पुनर्निर्देशित कर सकते हैं:
$ python -m stdindemo < inputs.txt
foo
bar
baz
हम मॉड्यूल को स्क्रिप्ट के रूप में भी निष्पादित कर सकते हैं:
$ python stdindemo.py < inputs.txt
foo
bar
baz
यहां input
पाइथन 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
चूंकि फाइल डिस्क्रिप्टर के लिए stdin
और 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
फ़ाइल एपीआई, इटरेटर प्रोटोकॉल सहित लागू करता है, इसलिए यह केवल इस प्रकार है:
import sys
for line in sys.stdin:
pass
एक अन्य जवाब यह सुझाव देता है। बस याद रखें कि यदि आप एक दुभाषिया में करते हैं, तो आपको करने की आवश्यकता होगी Ctrl- dयदि आप लिनक्स या मैक पर हैं, या Ctrl- प्रक्रिया के अंत-में-फ़ाइल चरित्र भेजने के लिए zविंडोज (बाद में Enter) पर। इसके अलावा, वह उत्तर बताता है print(line)
- जो '\n'
कि अंत में जोड़ता है - print(line, end='')
इसके बजाय उपयोग करें (यदि पायथन 2 में, आपको आवश्यकता होगी from __future__ import print_function
)।
के लिए वास्तविक उपयोग मामला fileinput
फाइलों की एक श्रृंखला में पढ़ने के लिए है।
दूसरों द्वारा प्रस्तावित उत्तर:
for line in sys.stdin:
print line
बहुत सरल और पाइथोनिक है, लेकिन यह ध्यान दिया जाना चाहिए कि इनपुट की तर्ज पर पुनरावृति शुरू करने से पहले स्क्रिप्ट ईओएफ तक इंतजार करेगी।
इसका मतलब है कि tail -f error_log | myscript.py
उम्मीद के मुताबिक लाइनों को संसाधित नहीं किया जाएगा।
ऐसे उपयोग के मामले की सही स्क्रिप्ट होगी:
while 1:
try:
line = sys.stdin.readline()
except KeyboardInterrupt:
break
if not line:
break
print line
अद्यतन
टिप्पणी से यह स्पष्ट हो गया है कि अजगर 2 पर केवल बफरिंग शामिल हो सकती है, ताकि आप प्रिंट कॉल जारी होने से पहले या ईओएफ भरने के लिए बफर का इंतजार कर सकें।
for line in sys.stdin:
पैटर्न नहीं है EOF के लिए प्रतीक्षा करें। लेकिन अगर आप बहुत छोटी फाइलों पर परीक्षण करते हैं, तो प्रतिक्रियाएं बफर हो सकती हैं। यह देखने के लिए अधिक डेटा के साथ परीक्षण करें कि यह मध्यवर्ती परिणाम पढ़ता है।
print line
3.1.3 में नहीं जागता है, लेकिन print(line)
करता है।
for line in sys.stdin:
"EOF तक ब्लॉक नहीं करता"। पाइथन 2 में एक रीड-फॉरवर्ड बग है जो कि इसी बफ़र के पूर्ण होने तक लाइनों को विलंबित करता है। यह एक बफ़रिंग समस्या है जो EOF से संबंधित नहीं है। वर्कअराउंड करने के लिए, उपयोग for line in iter(sys.stdin.readline, ''):
( io.open()
साधारण फ़ाइलों के लिए उपयोग )। आपको इसकी आवश्यकता नहीं है पायथन 3.
का उपयोग कर सभी awers पर निर्माण sys.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 / Unix प्रोग्राम जैसे cat
, grep
और sed
।
argparse
एक आसान उपाय हैउदाहरण पायथन 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
या यहाँ स्ट्रिंग द्वारा प्रतिस्थापित 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 -
add_argument('--in'
और फिर स्क्रिप्ट पर पाइप करें और --in -
कमांड लाइन में जोड़ें । in
चर / विशेषता के लिए PS एक बहुत अच्छा नाम नहीं है।
in
एक चर के लिए सिर्फ एक बुरा नाम नहीं है, यह अवैध है। आरक्षित कीवर्ड के args.in.read()
कारण InvalidSyntax त्रुटि को बढ़ाएगा in
। बस infile
अजगर का नाम बदलकर डॉक्स करने के लिए नाम बदल सकते हैं: docs.python.org/3/library/…
कोड की निम्नलिखित चिप आपकी मदद करेगी (यह EOF
एक स्ट्रिंग में, सभी स्टड को अवरुद्ध करना पढ़ेगी ):
import sys
input_str = sys.stdin.read()
print input_str.split()
मैं बहुत चकित हूं कि किसी ने भी अब तक इस हैक का उल्लेख नहीं किया है:
python -c "import sys; set(map(sys.stdout.write,sys.stdin))"
python2 में आप set()
कॉल ड्रॉप कर सकते हैं , लेकिन यह किसी भी तरह से शब्द करेगा
readlines
उस विभाजन का उपयोग लाइनों में और फिर join
से क्यों करें? आप सिर्फ लिख सकते हैंprint(sys.stdin.read())
write
रिटर्न None
, और सेट का आकार 1 से अधिक कभी नहीं होगा ( =len(set([None]))
)
आप स्टडिन से पढ़ सकते हैं और फिर इनपुट को "डेटा" में निम्नानुसार स्टोर कर सकते हैं :
data = ""
for line in sys.stdin:
data += line
data = sys.stdin.read()
, बार-बार स्ट्रिंग कंक्रीटिंग की समस्या के बिना।
से पढ़ें sys.stdin
, लेकिन विंडोज पर द्विआधारी डेटा पढ़ने के लिए , आपको अतिरिक्त सावधानी बरतने की आवश्यकता है, क्योंकि sys.stdin
पाठ मोड में खोला गया है और यह आपके \r\n
साथ की जगह को भ्रष्ट करेगा \n
।
समाधान बाइनरी में मोड सेट करने के लिए है यदि विंडोज + पायथन 2 का पता चला है, और पायथन 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()
मैं निम्नलिखित विधि का उपयोग करता हूं, यह स्टड से एक स्ट्रिंग लौटाता है (मैं इसे जसन पार्सिंग के लिए उपयोग करता हूं)। यह विंडोज पर पाइप और प्रॉम्प्ट के साथ काम करता है (अभी तक लिनक्स पर परीक्षण नहीं किया गया है)। जब संकेत देते हैं, तो दो पंक्ति विराम इनपुट के अंत का संकेत देते हैं।
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
समस्या मेरे पास समाधान के साथ है
import sys
for line in sys.stdin:
print(line)
यह है कि यदि आप किसी डेटा को स्टड करने के लिए पास नहीं करते हैं, तो यह हमेशा के लिए ब्लॉक हो जाएगा। इसलिए मुझे यह जवाब पसंद है : अगर पहले स्टड पर कुछ डेटा है, तो जांच करें और फिर पढ़ें। यह वही है जो मैंने किया:
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)
select
कॉल किया जाता है तो इनपुट लगभग "तैयार" नहीं होगा ; या अगर आप एक धीमी माध्यम (नेटवर्क, सीडी, टेप, आदि) पर स्टड एक फ़ाइल से जुड़ा हुआ है तो भी आपको समस्याओं का सामना करना पड़ सकता है। आपने कहा था कि "यदि आप किसी भी डेटा को स्टड करने के लिए पास नहीं करते हैं, तो यह हमेशा के लिए अवरुद्ध हो जाएगा।" एक समस्या है , लेकिन मैं कहूंगा कि यह एक विशेषता है । अधिकांश सीएलआई कार्यक्रम (जैसे cat
) इस तरह से काम करते हैं, और उनसे उम्मीद की जाती है। EOF केवल एक चीज है जिस पर आपको इनपुट के अंत का पता लगाने के लिए निर्भर होना चाहिए।
मुझे कुछ समस्याएँ थीं जब इस पर काम करने के लिए पर्चियों पर पढ़ने के लिए मिलता था। जब सॉकेट बंद हो गया तो वह सक्रिय लूप में खाली स्ट्रिंग लौटाने लगा। तो यह मेरा समाधान है (जो मैंने केवल लिनक्स में परीक्षण किया है, लेकिन आशा है कि यह अन्य सभी प्रणालियों में काम करता है)
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
और आप इसे टेलनेट के साथ कॉल कर सकते हैं या बस एक ब्राउज़र को लोकलहोस्ट पर इंगित कर सकते हैं: 12345
इसके बारे में:
for line in sys.stdin:
मैंने इसे बहुत बड़ी फ़ाइल के लिए अजगर 2.7 (किसी और के सुझाव के बाद) पर आज़माया, और मैं इसकी अनुशंसा नहीं करता, ठीक ऊपर बताए गए कारणों के लिए (कुछ भी लंबे समय तक नहीं होता है)।
मैं थोड़ा अधिक पायथोनिक समाधान के साथ समाप्त हुआ (और यह बड़ी फ़ाइलों पर काम करता है):
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
sys.stdin
स्क्रिप्ट के लिए एक कमांड-लाइन तर्क के रूप में पारित कर रहा हूं ।
sys.stdin
स्क्रिप्ट पर कमांड-लाइन तर्क के रूप में कैसे पास कर सकते हैं ? तर्क तार हैं और धाराएं फ़ाइल की तरह की वस्तुएं हैं, वे समान नहीं हैं।
sys.stdin
एक फ़ाइल की तरह वस्तु है
के लिए अजगर 3 हो सकता है कि:
# Filename e.g. cat.py
import sys
for line in sys.stdin:
print(line, end="")
यह मूल रूप से बिल्ली (1) का एक सरल रूप है, क्योंकि यह प्रत्येक पंक्ति के बाद एक नई रेखा नहीं जोड़ता है। आप इसका उपयोग कर सकते हैं (आपके द्वारा फ़ाइल निष्पादन योग्य चिह्नित करने के बाद chmod +x cat.py
जैसे कि:
echo Hello | ./cat.py
-c
कमांड का उपयोग करते समय , एक ट्रिकी तरीके के रूप में, stdin
(और कुछ मामलों में अधिक लचीला) पढ़ने के बजाय, आप $
साइन द्वारा शुरू किए गए कोष्ठक के भीतर उद्धरणों में बेचने की कमान डालकर एक शेल स्क्रिप्ट कमांड के साथ-साथ अपने अजगर कमांड को पास कर सकते हैं ।
जैसे
python3 -c "import sys; print(len(sys.argv[1].split('\n')))" "$(cat ~/.goldendict/history)"
यह गोल्डेंडिक्ट के इतिहास फ़ाइल से लाइनों की संख्या की गणना करेगा।