Привет!
1) Как остаться в интерактивном режиме после завершения выполнения скрипта?
---------------------------------
$ python hz.py k0040.hz
['hz.py', 'k0040.hz']
Program file name: hz.py
Arguments: ['k0040.hz']
$
-------------------------------
2) Почему происходит ошибка?
-------------------------------------------
$python
>>> import hz.py k0040.hz
File "<stdin>", line 1
import hz.py k0040.hz
^
SyntaxError: invalid syntax
>>>
--------------------------------------
k0040.hz - является аргументом данного скрипта. Но интерпретатор этого не понимает. Почему?
PYTHON-скрипт: как остаться в интерактивном режиме?
При импорте расширение не указывается.
Да и аргумент не у места, наверное.
не указывая расширение при импорте ситуация не меняется.
---------------------------------
>>> import hz k0040.hz
File "<stdin>", line 1
import hz k0040.hz
^
SyntaxError: invalid syntax
>>>
------------------------------
Вопрос, зачем в строке с импортом аргумент?
Может всё таки
from hz import k0040
Дело в том, что hz.py - это питоновский скрипт. Данный скрипт предназначен для чтения и обработки информации из файлов с расширением .hz .Файлы могут быть разные и их много, поэтому их вход в скрипт оформлен как аргумент. Скрипт работает хорошо, если я его запускаю в виде
-------------------------------
$python hz.py k0040.hz
-------------------------------
Однако, корректно запустить его из интерактивного режима не могу (не знаю как), т.к. наверняка требуется указать какие-то дополнительные опции или следовать определённому синтаксису, а я в питоне новичок.
Как то так
http://fantom-lab.narod.ru/Python/LerningPythonHelpRus/Lerning/02.htm#0224
(там вроде про python 2.4Б но в python 2.6 тоже самое)
Вам, видимо, стоит отредактировать сам скрипт.
Предположу, что в скрипте имеется нечто такое
import sys
.....
.....
sys.argv[1]
Так и получается Ваш аргумент, который Вы вводите.
Эту конструкцию надо заменить на запрос введения строки
raw_input() # если python 2.x
input() # если python 3.x
но не видя скрипта, посоветовать что то сложно.
Спасибо за ссылку! Вычитал мой ответ на первый вопрос:
-------------------
$ python -i hz.py k0040.hz
['hz.py', 'k0040.hz']
Program file name: hz.py
Arguments: ['k0040.hz']
Shape of maindata massive: (24948, 35)
>>>
-----------------------
т.е. добавление опции -i перед названием скрипта позволяет остаться в интерпретаторе после завершения выполнения скрипта.
Однако, на данный момент остаётся неясен ответ на второй вопрос.
Да, действительно похожая конструкция действительно присутствует в моём скрипте.
-------------------------
#> read input file and arguments
args=sys.argv
print args
print 'Program file name: %s' % args[0] # Program file name
pgm=args[0]
print 'Arguments: %s' % args[1:] # Arguments
#<
#> check if a file-data argument is present
if len(args[1:])==0:
print "Pgm %s : one file name needed as argument. We stop." % pgm
sys.exit()
#<
-----------------------
Имя файла можно вводить по запросу, примерно так
filename = raw_input('Введите имя файла или нажмите "Enter" для завершения')
и потом уже обращаться к переменной filename.
А всё что касается sys.argv[1] убрать из скрипта.
Таким образом не выходя из скрипта Вы можете обработать несколько файлов.
Спасибо за помощь! Реализую.