Найти - Пользователи
Полная версия: Как прочитать файл из командной строки не используя библиотеки питона
Начало » Центр помощи » Как прочитать файл из командной строки не используя библиотеки питона
1
Lena13_08
Мне нужно открыть текстовый файл из командной строки в котоой помещена матрица(она может быть любого размера).
Как то так:
/ home / myuser / папка$ python3 programma . py < матрица . txt
Я знаю что можно открыть его через строку используя библиотеку sys через читание argv. Но как можно сделать это не используя её? Спасибо заранее
PEHDOM
Lena13_08
Как то так:
/home/myuser/папка$ python3 programma.py < матрица.txt
В данном случае файл передается не как аргумент, а направляеться в stdin процесса.
Соответственно матрицу нужно брать из stdin, хотя для этого опять нужно подключать sys:

 import sys
for line in sys.stdin:
    print(line)
Lena13_08
PEHDOM
Нам на курсе дали задание в котором мы дожлны сделать это без sys, поэтому способ.существует точно, но я не могу найти какой
Rodegast
argparse не подойдёт? https://docs.python.org/3.3/library/argparse.html
py.user.next
Lena13_08
поэтому способ.существует точно, но я не могу найти какой
input() берёт данные из stdin. Надо только в цикле его запустить.

#!/usr/bin/env python3

i = 0
while True:
i += 1
try:
s = input()
except EOFError:
break
print('line #{:03} {}'.format(i, s))

[guest@localhost py]$ ./t.py < t.py
line #001 #!/usr/bin/env python3
line #002
line #003 i = 0
line #004 while True:
line #005 i += 1
line #006 try:
line #007 s = input()
line #008 except EOFError:
line #009 break
line #010 print('line #{:03} {}'.format(i, s))
[guest@localhost py]$
PEHDOM
Lena13_08
Нам на курсе дали задание в котором мы дожлны сделать это без sys, поэтому способ.существует точно, но я не могу найти какой
а-а-а-, тогда инпут умеет читать из стдина, както так
 while True:
    try:
        text = input()
    except EOFError:
        break
    else:
        print(text.encode('cp1251'))
python input_from_stdint.py < input_from_stdint.py
b'\xef\xbb\xbfwhile True:'
b'    try:'
b'        text = input()'
b'    except EOFError:'
b'        break'
b'    else:'
b"        print(text.encode('cp1251'))"
я писал под вендой, под линем не нужно .encode('cp1251')
python335
напиши в консоли:
 echo (matrix.txt > proga.py)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB