如何使用Windows将命令行参数传递给路径无关的Python脚本?

如何使用Windows将命令行参数传递给路径无关的Python脚本?,python,path,command-line-arguments,Python,Path,Command Line Arguments,我正在使用Python编写各种命令行脚本来处理地震数据。处理的数据位于许多不同的目录中,代表来自许多不同地震仪的数据。我需要为脚本提供一些路径独立性,这样我就不必总是将脚本复制、剪切和粘贴到包含数据的目录中。为此,我尝试在系统环境中设置路径,以便使脚本可以在任何地方运行。这是我选择使用的方法 我将系统路径设置为包括以下内容: ";C:/Anaconda/Python.exe;C:/Anaconda/sigscript/" 然后我在PATHEXT中添加了以下内容 ";.py" 然后,我确保.

我正在使用Python编写各种命令行脚本来处理地震数据。处理的数据位于许多不同的目录中,代表来自许多不同地震仪的数据。我需要为脚本提供一些路径独立性,这样我就不必总是将脚本复制、剪切和粘贴到包含数据的目录中。为此,我尝试在系统环境中设置路径,以便使脚本可以在任何地方运行。这是我选择使用的方法

我将系统路径设置为包括以下内容:

 ";C:/Anaconda/Python.exe;C:/Anaconda/sigscript/"
然后我在PATHEXT中添加了以下内容

";.py"
然后,我确保.py扩展名与python.exe相关联,这样,如果发现,操作系统将把它传递给python.exe

现在,每当我在命令行提示符下时,不管当前的工作目录是什么,如果我在sigscript目录中有一个python脚本,它就会启动并运行。然而,我的问题是它运行,但是当它被传递到python.exe时,它会去掉所有的命令行参数

使用脚本myscript.py

import os,sys

for i in range(0,len(sys.argv)):
    print "Argument {0} = '{1}'".format(i,sys.argv[i])
如果通过显式地将该脚本发送到Python来运行该脚本,则会得到以下输出:

c:\Anaconda\sigscript\> Python myscript.py arg1 arg2 arg3
Argument 0 = 'myscript.py'
Argument 1 = 'arg1'
Argument 2 = 'arg2'
Argument 3 = 'arg3'
…这是应该的!参数正在传递到代码中

但是,如果我尝试运行代码,让操作系统从该目录外部(甚至从目录内部)查找脚本并将其与python关联,我会得到以下结果:

c:\Seismic\> myscript.py arg1 arg2 arg3
Argument 0 = 'C:\Anaconda\sigscript\myscript.py'
因此,剩下的论点被剔除了

显然,设置脚本以我的方式执行存在一些问题。然而,我需要以某种方式集中我的代码,而不是被迫显式地键入源目录名。如何在保留传递命令行参数的能力的同时,在目录中移动并执行脚本

FWIW,这是我的当前路径环境变量:

PATH=C:\ProgramData\Oracle\Java\javapath;
C:\Program Files\Common Files\Microsoft Shared\Windows Live;
C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
C:\Windows\system32;
C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Intel\DMIX;C:\Program Files (x86)\Simply Fortran\mingw-w64\bin;
C:\Program Files (x86)\Common Files\GTK\2.0\bin;
C:\Program Files (x86)\MATLAB\R2012a Student\bin;
C:\Program Files (x86)\Git\cmd;
C:\Anaconda;
C:\Anaconda\Scripts;
C:\Program Files (x86)\Windows Live\Shared;
C:\Program Files (x86)\QuickTime\QTSystem\;
C:\Dwimperl\perl\bin;C:\Dwimperl\perl\site\bin;
C:\Dwimperl\c\bin;c:\gmt5\bin;C:\Program Files (x86)\Skype\Phone\;
C:\Anaconda\sigscript\;
C:\Program Files\Agilent\IO Libraries Suite\bin;
C:\Program Files\IVI Foundation\VISA\Win64\agvisa;
C:\Program Files\IVI Foundation\VISA\Win64\bin;
C:\Program Files (x86)\Agilent\IO Libraries Suite\bin;
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\agvisa;
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\bin;
C:\Program Files (x86)\IVI Foundation\IVI\bin;
C:\Program Files\IVI Foundation\IVI\bin;
C:\Program Files (x86)\IVI Foundation\VISA\WinNT\Bin\;
C:\Program Files\IVI Foundation\VISA\Win64\Bin\;
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;
C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;
C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;
C:\Anadonca\python.exe
可能的重复可能的重复