Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: неправильно работает модуль os.system python 3  (Прочитано 5754 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн bastion

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
  • Python / Qt
    • Просмотр профиля
    • Искусство креативного массажа
для проверки синтаксиса и первых шагов пользуюсь IDLE python3
>>>import os
>>>os.system('wc -c log')
0
>>>
Если запускаю питон из терминала, то
mad@user:~$ python3
>>>os.system('wc -c log')
20 log      выдает размер
0
Вопрос: я почемуто уверен, что этот баг не решится, но все же может можно что сделать? Подскажите :(
Готов взяться за любую работу, при условии, что за нее не нужно приниматься прямо сейчас

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #1 : 14 Июля 2010, 11:26:00 »
Попробуйте,
import os
os.system('ls')
os.system('pwd')
для начала, чтобы говорить про баги.
« Последнее редактирование: 14 Июля 2010, 11:28:02 от alexander.pronin »

Оффлайн bastion

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
  • Python / Qt
    • Просмотр профиля
    • Искусство креативного массажа
Re: неправильно работает модуль os.system python 3
« Ответ #2 : 14 Июля 2010, 11:43:44 »
Цитировать
Попробуйте,
import os
os.system('ls')
os.system('pwd')
ну и что... вы что решили, что я привожу частный случай...
wc -c example - это был пример,
поэтому и говорю, что os.system в idle выполняется некоректно как мне кажется, вот и спрашиваю
Готов взяться за любую работу, при условии, что за нее не нужно приниматься прямо сейчас

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #3 : 14 Июля 2010, 11:48:51 »
Выводит 0 - это значит все ОК.
Если ничего другого нет - значит и нет.
Толи другой директорий, толи еще что-то.
Я Вам поэтому и предложил выполнить 2 команды.
А Вы упираетесь. ;D

Оффлайн DnSL48

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #4 : 14 Июля 2010, 12:08:02 »
from subprocess import call
call('wc -c log',shell=True)

from subprocess import Popen, PIPE
print Popen('wc -c log', shell=True, stdout=PIPE).stdout.read()

P.S. system(command) возвращает exit_status, а следовательно, работает нормально
« Последнее редактирование: 14 Июля 2010, 12:12:43 от DnSL48 »
ArchLinux x86_64

Оффлайн bastion

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
  • Python / Qt
    • Просмотр профиля
    • Искусство креативного массажа
Re: неправильно работает модуль os.system python 3
« Ответ #5 : 14 Июля 2010, 12:21:02 »
Цитировать
А Вы упираетесь. Grin
я не упрямлюсь, я хочу, что бы idle интерпретировал команды так же как из под терминала, ... разве не в этом его задача

Цитировать
Код:

from subprocess import call
call('wc -c log',shell=True)
Неа , тот же результат, что в винде, что в линухе "0"

Отныне "0" - для меня символ успешного выполнения команды

Цитировать
P.S. system(command) возвращает exit_status, а следовательно, работает нормально
Но почему IDLE не хочет показывать результат выполнения команды?
« Последнее редактирование: 14 Июля 2010, 12:23:56 от bastion »
Готов взяться за любую работу, при условии, что за нее не нужно приниматься прямо сейчас

Оффлайн DnSL48

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #6 : 14 Июля 2010, 12:23:28 »
все правильно. Команда выполняется, и возвращается код завершения - 0 означает отсутствие ошибки. Если нужен вывод команды - смотри второй кусок кода в моем посте

я не упрямлюсь, я хочу, что бы idle интерпретировал команды так же как из под терминала, ... разве не в этом его задача

отнюдь. Его задача абсолютно в другом. А тебе, видимо, нужен совсем не IDLE, а скорее iPython

Но почему IDLE не хочет показывать результат выполнения команды?
Потому что это отдельное от консоли приложение, которое выполняется в своем контексте, а собственно с консолью никак не связано
« Последнее редактирование: 14 Июля 2010, 12:30:16 от DnSL48 »
ArchLinux x86_64

Оффлайн bastion

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
  • Python / Qt
    • Просмотр профиля
    • Искусство креативного массажа
Re: неправильно работает модуль os.system python 3
« Ответ #7 : 14 Июля 2010, 12:28:33 »
print Popen('wc -c log', shell=True, stdout=PIPE).stdout.read()
SyntaxError: invalid syntax

Цитировать
А тебе, видимо, нужен совсем не IDLE, а скорее iPython
- наверное, но все равно спасибо, ты явно круче знаеш python
« Последнее редактирование: 14 Июля 2010, 12:30:34 от bastion »
Готов взяться за любую работу, при условии, что за нее не нужно приниматься прямо сейчас

Оффлайн DnSL48

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #8 : 14 Июля 2010, 12:31:11 »
print Popen('wc -c log', shell=True, stdout=PIPE).stdout.read()
SyntaxError: invalid syntax
там 2 строчки. Первая - импорт. Ты наверное его и забыл сделать
ArchLinux x86_64

Оффлайн bastion

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
  • Python / Qt
    • Просмотр профиля
    • Искусство креативного массажа
Re: неправильно работает модуль os.system python 3
« Ответ #9 : 14 Июля 2010, 12:40:03 »
Ну давай разберемся, надо же найти истину:
Python 3.1.2 (r312:79147.........)
[GCC 4.4.3] on Linux2
===No subprocess ===
>>>from subprocess import  call, Popen, PIPE
>>>call ('wc -c log', shell=True)
0
>>>print [color=red]Popen[/color]('wc -c log', shell=True, stdout=PIPE).stdout.read()
SyntaxError^ invalid syntax
так где ошибка... красным выделен Popen
Готов взяться за любую работу, при условии, что за нее не нужно приниматься прямо сейчас

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #10 : 14 Июля 2010, 12:54:02 »
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
import os
print "Вариант 1"
os.system('ls')
temp=os.popen('ls').readlines()
print "Вариант 2"
print temp
print "Вариант 3"
temp=os.popen('ls').read()
print temp

Оффлайн DnSL48

  • Активист
  • *
  • Сообщений: 286
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #11 : 14 Июля 2010, 12:54:15 »
нене. Смотри. У меня в посте есть 2 кода. Первый - чисто замена коду с os.systym, который ведет себя так же, но более переносим и рекомендован к использованию вместо os.system
Второй кусок кода(обе строчки) ни как не относится к первому, и призван решить именно твою задачу. Т.е. посмотри их оба повнимательнее.
ArchLinux x86_64

Оффлайн bastion

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
  • Python / Qt
    • Просмотр профиля
    • Искусство креативного массажа
Re: неправильно работает модуль os.system python 3
« Ответ #12 : 14 Июля 2010, 12:58:17 »
Цитировать
temp=os.popen('ls').read()
print temp
alexander.pronin - ну спасибо, вот это класс
DnSL48
Огромное спасибо, один вопрос, а столько нового почерпнул
Готов взяться за любую работу, при условии, что за нее не нужно приниматься прямо сейчас

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: неправильно работает модуль os.system python 3
« Ответ #13 : 14 Июля 2010, 13:07:53 »
И все-таки Вы упираетесь. :idiot2:

Оффлайн bastion

  • Автор темы
  • Любитель
  • *
  • Сообщений: 94
  • Python / Qt
    • Просмотр профиля
    • Искусство креативного массажа
Re: неправильно работает модуль os.system python 3
« Ответ #14 : 14 Июля 2010, 13:54:44 »
Цитировать
И все-таки Вы упираетесь
Ничего я не упираюсь   :(, я вот это и искал:
os.popen('ls').read()
Готов взяться за любую работу, при условии, что за нее не нужно приниматься прямо сейчас

 

Страница сгенерирована за 0.091 секунд. Запросов: 25.