【问题标题】:Running python scripts from DOS or python shell without path name从没有路径名的 DOS 或 python shell 运行 python 脚本
【发布时间】:2011-07-15 22:23:24
【问题描述】:

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

python sample.py

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

python C:\PythonPractice\sample.py

有什么想法吗?

【问题讨论】:

标签: python windows-7 dos


【解决方案1】:

对于 DOS 窗口:

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

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

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

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

【讨论】:

    【解决方案2】:
    @echo off
    c:
    CD c:\py
    c:\python271\python.exe %1
    

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

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

    C:\Windows>py hallowelt.py
    Hallo!
    

    【讨论】:

      【解决方案3】:

      Jacob 的回答略有改进:

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

      将其另存为 py.cmd 在您的 PATH 环境变量中的一个目录中。然后就可以调用了

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-01
        • 2019-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多