windows 7-从DOS或python shell运行python脚本,不带路径名



我试图编辑注册表,所以当我在python shell或DOS窗口中键入时:

python sample.py

我希望它转到我保存.py文件的目录,然后运行该文件,而无需键入:

python C:PythonPracticesample.py

有什么想法吗?

对于DOS窗口:

set VARIABLE=yourpath
python %VARIABLE%sample.py

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

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

您可以通过进入"Control Panel">>"System">>"Advanced System settings">>"Environment Variables"(控制面板">>"系统">>"高级系统设置">>"环境变量"(进行永久设置。您可能想在帐户中添加一个变量,除非您希望它影响所有系统配置文件。可能需要重新启动。

@echo off
c:
CD c:py
c:python271python.exe %1

将其另存为PATH上的目录中的py.bat。将c:\py更改为脚本的目录。

你可以这样从任何地方调用你的脚本:

C:Windows>py hallowelt.py
Hallo!

Jacob的答案略有改进:

@echo off
pushd c:py
c:python271python.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.

最新更新