Найти - Пользователи
Полная версия: Перенаправление ввода вывода на питоне
Начало » Python для новичков » Перенаправление ввода вывода на питоне
1 2
_sheva740
Добрый день.
Хочу сделать скрипт, чтобы запускать его так
С:\mescript.py < dic.txt > rez.txt
У меня текстовый файл dic.txt слова по одному в строку
Пишу скрипт myscript.py
# -*- coding: utf-8 -*-
import os
import sys
os.chdir(os.path.dirname(os.path.abspath(__file__)))
while True:
	try:
		line=input()
		print(line)
	except EOFError:
		break
… запускаю …
Ошибка
C:\>myscript.py < dic.txt  > rez.txt
Traceback (most recent call last):
File "C:\myscript.py", line 8, in <module>
line=input()
RuntimeError: input(): lost sys.stdin

Не сдаюсь, делаю так …
Пишу .bat как script.bat
@echo on
C:\Python33\python myscript.py < dic.txt

… а запускаю его так
script.bat > rez.txt
Так работает!!

Вопрос: Как переписать мой питоновский скрипт так чтобы работало сразу так …
myscript.py < dic.txt > rez.txt

Спасибо.

Master_Sergius
1) в винде тоже есть перенаправление?
2) зачем придумывать такое? вот прикольно было бы, если кнопку “резет” поместили не на системнике, а на клаве возле “ентера”? не надо решать задачи извращёнными путями
_sheva740
Ну ведь можно же как-то?
Подскажите пожалуйста.
))
Master_Sergius
можно через sys.argv, парсить всё, что находится в командной строке после самого скрипта, но это извращение, 18+… а в Северной Корее могли бы и руки отрубить
_sheva740
можно через sys.argv, парсить всё, что находится в командной строке
Да не, важно же чтобы без параметров ком строки, а только перенаправлением
myscript.py < dic.txt > rez.txt
PanovSergey
Какая то виндузячья фича с перенаправлением под никсы работает без проблем

Если input заменить на sys.stdin.read, то работает.
_sheva740
У меня
Python 3.3
XP SP2
… и такая ошибка ((((
C:\>myscript.py <dic.txt >rez.txt
Traceback (most recent call last):
File "C:\myscript.py", line 7, in <module>
line=input()
RuntimeError: input(): lost sys.stdin

… не понимаю что делать, я просто новичек в этом всем (((
py.user.next
_sheva740
… запускаю …
Ошибка
это проблемы системы

_sheva740
не понимаю что делать
хочешь программировать - поставь линукс
PanovSergey
# -*- coding: utf-8 -*-
import os
import sys
import fileinput
os.chdir(os.path.dirname(os.path.abspath(__file__)))
for line in fileinput.input():
    print line
Так с файлом работает. Но не работает если просто вводить данные ибо ждет он EOF.

Украдено отсюда
PanovSergey
py.user.next
хочешь программировать - поставь линукс
Очень спорное утверждение.
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