Форум программистов
 
Расширенный поиск
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 28.07.2013, 23:27   #1
NiceNick
Новичок
 
Регистрация: 28.07.2013
Сообщений: 4
Репутация: 10
По умолчанию функция 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,958
Репутация: 6799
По умолчанию

Код:

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
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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,958
Репутация: 6799
По умолчанию

Цитата:
то что Вы написали тоже не работает
Ну так тебе нужно сейчас не лезть в дебри, а просто прочитать книгу до конца.
Цитата:
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
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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,958
Репутация: 6799
По умолчанию

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

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

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

icq: 216409213
По умолчанию

Цитата:
если функция exec и open уже представлена в 3й главе
там по мере обучения приводятся примеры с которыми мне нужно работать
Вот не понимаю нафига она так рано в той книге понадобилась...
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нубовопрос: 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 13:04




08:56.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
лучший хостинг
Выбираем лучший хостинг: рейтинг ТОП 10
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru