Вы можете использовать результат Number при передаче аргумента его конструктору.
Если аргумент (строка) не может быть преобразован в число, он возвращает NaN, поэтому вы можете определить, была ли приведенная строка допустимым числом или нет.
Примечания: Обратите внимание, что при передаче пустой строки или '\t\t'
и '\n\t'
, когда Number возвращает 0; Передача true вернет 1, а false вернет 0.
Number('34.00') // 34
Number('-34') // -34
Number('123e5') // 12300000
Number('123e-5') // 0.00123
Number('999999999999') // 999999999999
Number('9999999999999999') // 10000000000000000 (integer accuracy up to 15 digit)
Number('0xFF') // 255
Number('Infinity') // Infinity
Number('34px') // NaN
Number('xyz') // NaN
Number('true') // NaN
Number('false') // NaN
// cavets
Number(' ') // 0
Number('\t\t') // 0
Number('\n\t') // 0
p1.py:
execfile("p2.py")
p2.py:
import inspect, os
print inspect.getfile(inspect.currentframe()) # script filename (usually with path)
print os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) # script directory
Можно использовать inspect.stack()
import inspect,os
inspect.stack()[0] => (<frame object at 0x00AC2AC0>, 'g:\\Python\\Test\\_GetCurrentProgram.py', 15, '<module>', ['print inspect.stack()[0]\n'], 0)
os.path.abspath (inspect.stack()[0][1]) => 'g:\\Python\\Test\\_GetCurrentProgram.py'
__file__
атрибут работает на обоих файл, содержащий основной код выполнения, а также импортированные модули.
См. https://web.archive.org/web/20090918095828/http://pyref.infogami.com / __ файл __
Не совсем ясно, что Вы подразумеваете "под filepath файла, который в настоящее время работает в рамках процесса". sys.argv[0]
обычно содержит местоположение сценария, который был вызван интерпретатором Python. Проверьте sys документация для получения дополнительной информации.
, Поскольку @Tim и @Pat Notz указали, __ файл __, атрибут обеспечивает доступ к
файл, из которого был загружен модуль, если это было загружено из файла
Я думаю, что это всего __file__
, Кажется, что можно также хотеть к контролю эти , осматривают модуль .
Так как Python 3 является довольно основным, я хотел включать pathlib
ответ, поскольку я полагаю, что это - вероятно, теперь лучший инструмент для доступа к файлу и информации о пути.
from pathlib import Path
current_file: Path = Path(__file__).resolve()
при поиске каталога текущего файла это столь же легко как добавление .parent
к Path()
оператор:
current_path: Path = Path(__file__).parent.resolve()
__file__
, как сказали другие. Вы также можете использовать os.path.realpath для устранения симлинков:
import os
os.path.realpath(__file__)
import sys
print sys.path[0]
это напечатает путь выполняющегося в настоящее время скрипта
.Все предложения, отмеченные как лучшие, верны, если ваш сценарий состоит только из одного файла.
Если вы хотите узнать имя исполняемого файла (т. Е. Корневого файла, переданного интерпретатору python для текущей программы) из файла, который может быть импортирован как модуль, вам необходимо сделать это (предположим, что это в файле с именем foo.py ):
import inspect
print inspect.stack () [- 1] [1]
Потому что последнее ( [- 1 ]
) в стеке - это первое, что в него попадает (стеки представляют собой структуры данных LIFO / FILO).
Затем в файле bar.py , если вы импортируете foo
, он напечатает bar.py , а не foo.py , который будет значением всех из них:
__ file __
inspect.getfile (inspect.currentframe ())
inspect.stack () [0] [1]