Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 6, 2014 13:26:20

_sheva740
Зарегистрирован: 2014-02-06
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление ввода вывода на питоне

Добрый день.
Хочу сделать скрипт, чтобы запускать его так
С:\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

Спасибо.

Отредактировано _sheva740 (Фев. 6, 2014 13:28:15)

Офлайн

#2 Фев. 6, 2014 16:39:39

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Перенаправление ввода вывода на питоне

1) в винде тоже есть перенаправление?
2) зачем придумывать такое? вот прикольно было бы, если кнопку “резет” поместили не на системнике, а на клаве возле “ентера”? не надо решать задачи извращёнными путями



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#3 Фев. 6, 2014 17:23:14

_sheva740
Зарегистрирован: 2014-02-06
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление ввода вывода на питоне

Ну ведь можно же как-то?
Подскажите пожалуйста.
))

Офлайн

#4 Фев. 6, 2014 17:29:10

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Перенаправление ввода вывода на питоне

можно через sys.argv, парсить всё, что находится в командной строке после самого скрипта, но это извращение, 18+… а в Северной Корее могли бы и руки отрубить



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#5 Фев. 6, 2014 17:40:31

_sheva740
Зарегистрирован: 2014-02-06
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление ввода вывода на питоне

можно через sys.argv, парсить всё, что находится в командной строке
Да не, важно же чтобы без параметров ком строки, а только перенаправлением
myscript.py < dic.txt > rez.txt

Офлайн

#6 Фев. 6, 2014 19:21:42

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Перенаправление ввода вывода на питоне

Какая то виндузячья фича с перенаправлением под никсы работает без проблем

Если input заменить на sys.stdin.read, то работает.

Отредактировано PanovSergey (Фев. 6, 2014 19:55:29)

Офлайн

#7 Фев. 6, 2014 19:50:33

_sheva740
Зарегистрирован: 2014-02-06
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Перенаправление ввода вывода на питоне

У меня
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

… не понимаю что делать, я просто новичек в этом всем (((

Офлайн

#8 Фев. 6, 2014 19:55:20

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Перенаправление ввода вывода на питоне

_sheva740
… запускаю …
Ошибка
это проблемы системы

_sheva740
не понимаю что делать
хочешь программировать - поставь линукс



Офлайн

#9 Фев. 6, 2014 20:11:19

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Перенаправление ввода вывода на питоне

# -*- 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 (Фев. 6, 2014 20:12:33)

Офлайн

#10 Фев. 6, 2014 20:14:25

PanovSergey
От: Екатеринбург
Зарегистрирован: 2013-12-29
Сообщения: 269
Репутация: +  19  -
Профиль   Адрес электронной почты  

Перенаправление ввода вывода на питоне

py.user.next
хочешь программировать - поставь линукс
Очень спорное утверждение.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version