我试图编辑注册表,所以当我在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.