Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2013, 23:27   #1
NiceNick
 
Регистрация: 28.07.2013
Сообщений: 4
По умолчанию функция exec (Python 3.3.2)

Доброго времени суток!
Начал изучать Python по книге Лутца и зациклился на одном моменте.


Описываю ситуацию
Создал модуль scr1.py:
Код:
import sys
print(sys.platform)
print(2 ** 100)
x = 'spam'
print(x * 8)
input()
После чего его нужно было запустить с помощью exec:
Код:
exec(open('scr1.py').read())
Он начинает ругаться, что не может найти файл (хотя я пробовал закидывать его в библиотеку python к прочим модулям, не помогло):
Код:
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    exec(open('scr1.py').read())
FileNotFoundError: [Errno 2] No such file or directory: 'scr1.py'
После чего я попробовал прописать полностью путь нахождения данного модуля:
Код:
exec(open('C:\Pyth\scr1.py').read())
И он выдал мне результат:
Код:
win32
1267650600228229401496703205376
spamspamspamspamspamspamspamspam
Я добавил в переменные среды путь к папке Pyth (PYTHONPATH C:\Pyth)
И проверил в интерпретаторе:
Код:
>>> from sys import path
>>> path
['', 'C:\\Program Files\\Python\\Lib\\idlelib', 'C:\\Pyth', 
'C:\\Windows\\system32\\python33.zip', 'C:\\Program Files\\Python\\DLLs', 
'C:\\Program Files\\Python\\lib', 'C:\\Program Files\\Python', 
'C:\\Program Files\\Python\\lib\\site-packages']
>>>
Но не помогло.
По прежнему не находит файл, хотя по идее должен.

Собственно вопрос:
Что нужно сделать, чтобы каждый раз не прописывать полный путь к модулю?

Последний раз редактировалось NiceNick; 28.07.2013 в 23:29.
NiceNick вне форума Ответить с цитированием
Старый 29.07.2013, 00:03   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
exec(open(dirname(sys.argv[0])+'scr1.py').read())
Должно сработать норм.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2013, 00:19   #3
NiceNick
 
Регистрация: 28.07.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
exec(open(dirname(sys.argv[0])+'scr1.py').read())
Должно сработать норм.
дело в том, что код с книги должен работать
Код:
exec(open('scr1.py').read())
а оно не робить

P.S.: я только начинаю изучать язык и поэтому мне лучше не предлагать альтернативные(усложенные) варианты решения, т.к. во-первых я мало что пойму, а во-вторых мне нужно разобраться с этим, чтобы дальше изучать Python

P.P.S.: и то что Вы написали тоже не работает
Код:
>>> exec(open(dirname(sys.argv[0])+'scr1.py').read())
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    exec(open(dirname(sys.argv[0])+'scr1.py').read())
NameError: name 'dirname' is not defined

Последний раз редактировалось NiceNick; 29.07.2013 в 00:32.
NiceNick вне форума Ответить с цитированием
Старый 29.07.2013, 09:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
то что Вы написали тоже не работает
Ну так тебе нужно сейчас не лезть в дебри, а просто прочитать книгу до конца.
Цитата:
NameError: name 'dirname' is not defined
Означает скорее всего что ты не подключил модуль os, а точнее
Код:
from os.path import dirname
А я забыл тебе о нем сказать.
Цитата:
код с книги должен работать
Это тебе автор нашептал? Не верь.
Цитата:
я только начинаю изучать язык и поэтому мне лучше не предлагать альтернативные(усложенные) варианты решения
Ответ очевиден - ранно тебе exec() ами махачировать.
Если начал изучать то начни не с этого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.07.2013, 13:37   #5
NiceNick
 
Регистрация: 28.07.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так тебе нужно сейчас не лезть в дебри, а просто прочитать книгу до конца.

Означает скорее всего что ты не подключил модуль os, а точнее
Код:
from os.path import dirname
А я забыл тебе о нем сказать.

Это тебе автор нашептал? Не верь.

Ответ очевиден - ранно тебе exec() ами махачировать.
Если начал изучать то начни не с этого.
а как мне тогда обучаться, если функция exec и open уже представлена в 3й главе
там по мере обучения приводятся примеры с которыми мне нужно работать

P.S.:уже разобрался, дело было в самой системе, добавил в системных переменных в PATH папку с модулями и всё работает
NiceNick вне форума Ответить с цитированием
Старый 30.07.2013, 14:22   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
как мне тогда обучаться, если функция exec и open уже представлена в 3й главе
Хм.. Python. Подробный справочник, 4-е издание [Дэвид М. Бизли] (2010)
Вот что что а книга это отличная. Попробуй по ней обучаться.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2013, 01:14   #7
NiceNick
 
Регистрация: 28.07.2013
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Хм.. Python. Подробный справочник, 4-е издание [Дэвид М. Бизли] (2010)
Вот что что а книга это отличная. Попробуй по ней обучаться.
Спасибо Вам, не помешает.
Но все почему-то советуют Лутца.
NiceNick вне форума Ответить с цитированием
Старый 23.02.2014, 03:20   #8
T_E
Новичок
Джуниор
 
Регистрация: 23.02.2014
Сообщений: 1
По умолчанию

Помогите плз. У меня такая же проблема. Только вот я все прописал, но результата нет. Все равно надо вводить полный путь к модулю =(
T_E вне форума Ответить с цитированием
Старый 23.02.2014, 11:15   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
если функция exec и open уже представлена в 3й главе
там по мере обучения приводятся примеры с которыми мне нужно работать
Вот не понимаю нафига она так рано в той книге понадобилась...
p51x на форуме Ответить с цитированием
Старый 07.09.2022, 15:00   #10
SILVERT
Новичок
Джуниор
 
Регистрация: 07.09.2022
Сообщений: 1
По умолчанию

Не факт с полным путем. Надо было всего лишь набрать текст, запускающий код, руками. И странно, но все срабатывает отлично. Зачем так надо было конфигурировать оболочку Питона - это, скорее всего, вопрос к психиатру разработчика.
SILVERT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нубовопрос: insert-exec и rollback Ksardas13 SQL, базы данных 0 13.10.2012 17:58
exec() - проблема с запуском в оконной сесии The SCS PHP 1 03.07.2012 12:15
Функция для ввода строки в Python 2.7 или 3.2 Ibanez Wizard PHP 1 09.11.2011 22:35
Проблема с вызовом exec() из php на linux Fatum123 PHP 6 13.04.2009 22:36
exec sergei64_89 SQL, базы данных 2 12.12.2008 12:04