从DOS或python shell运行python脚本而没有路径名

时间:2011-07-15 22:23:25

标签: python windows-7 dos

当我输入python shell或DOS窗口时,我试图编辑注册表:

python sample.py

我希望它转到我保存.py文件的目录并运行该文件,而不必输入:

python C:\PythonPractice\sample.py

任何想法?

3 个答案:

答案 0 :(得分:0)

对于DOS窗口:

set VARIABLE=yourpath
python %VARIABLE%\sample.py

因此,对于您的示例,您可以这样做:

set p=C:\PythonPractice
python %p%\sample.py

您可以通过转到“控制面板”>>“系统”>>“高级系统设置”>>“环境变量”来永久设置此设置。您可能希望向帐户添加变量,除非您希望它影响所有系统配置文件。可能需要重启。

答案 1 :(得分:0)

@echo off
c:
CD c:\py
c:\python271\python.exe %1

py.bat保存在PATH的目录中。将c:\ py更改为脚本目录。

您可以从以下任何地方调用脚本:

C:\Windows>py hallowelt.py
Hallo!

答案 2 :(得分:0)

雅各布答案略有改善:

@echo off
pushd c:\py
c:\python271\python.exe %*
popd

将此保存为您的PATH环境变量中的一个目录中的 py.cmd 。然后你可以打电话

py sample.py arg1 arg2 ...

这适用于任意数量的参数。

但是,正如wberry所提到的,如果你真的需要,你也可以从Python脚本中更改工作目录(但我认为这是一个坏主意):

os.chdir(os.path.abspath(os.path.dirname(__file__))) #untested

虽然这不是您问题的答案,但我建议使用以下模式: 说,我有一个Python脚本 c:\ mydir \ myprog.py 需要特殊的环境变量(PATH,ORACLE_HOME,等等),也许它需要一个特定的工作目录。

然后我在同一目录中创建一个文件 myprog.cmd

@echo off
setlocal
set PATH=...
set ORACLE_HOME=...
pushd %~dp0
python %~dpn0.py %*
popd
endlocal

pushd / popd部分用于更改和恢复工作目录。

有关%〜...语法的说明,请键入

help call 

在命令提示符下。

这种方法可让您完全控制Python程序的环境。 请注意,python调用是通用的:如果您需要第二个Python脚本 otherprog.py ,那么只需将myprog.cmd的副本保存为 otherprog.cmd