通过终端向python脚本传递参数

通过终端向python脚本传递参数,python,python-3.x,image,python-2.7,shell-exec,Python,Python 3.x,Image,Python 2.7,Shell Exec,我有了这个python脚本,我现在从脚本本身的给定路径打开一个图像,我需要的是一种动态的方式将图像传递给脚本 例如:python pixel.py 9tiff,我将使用shell exec从php运行此程序,每次都需要传递不同的图像,因此无法将图像名称硬编码到脚本本身 import os, sys import Image im = Image.open('/www/test/tiffFiles/9.tiff') rgb_im = im.convert('RGB') r0, g0, b0 =

我有了这个python脚本,我现在从脚本本身的给定路径打开一个图像,我需要的是一种动态的方式将图像传递给脚本

例如:
python pixel.py 9tiff
,我将使用shell exec从php运行此程序,每次都需要传递不同的图像,因此无法将图像名称硬编码到脚本本身

import os, sys
import Image

im = Image.open('/www/test/tiffFiles/9.tiff')
rgb_im = im.convert('RGB')
r0, g0, b0 = rgb_im.getpixel((20, 20))
r1, g1, b1 = rgb_im.getpixel((40, 40))
r2, g2, b2 = rgb_im.getpixel((60, 60))
print(r0, g0, b0)
print(r1, g1, b1)
print(r2, g2, b2)

有很多类似的问题,但是如果你想要一个简单的解决方案,使用

但最好的总是


在python中解析命令行参数相当简单。您可以按如下方式将脚本更改为:

import sys
import Image

if __name__ =='__main__':
    im = Image.open(str(sys.argv[1]))
    rgb_im = im.convert('RGB')
    r0, g0, b0 = rgb_im.getpixel((20, 20))
    r1, g1, b1 = rgb_im.getpixel((40, 40))
    r2, g2, b2 = rgb_im.getpixel((60, 60))
    print(r0, g0, b0)
    print(r1, g1, b1)
    print(r2, g2, b2)

在Python中,argv[0]变量始终保留为Python脚本的名称
python myScript.py 9tiff
此处
argv[0]
myScript.py持有,
argv[1]
9tiff

使用
Sys.argv
的可能副本。请看这里:
import argparse

parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                    help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                    const=sum, default=max,
                    help='sum the integers (default: find the max)')

args = parser.parse_args()
print(args.accumulate(args.integers))
import sys
import Image

if __name__ =='__main__':
    im = Image.open(str(sys.argv[1]))
    rgb_im = im.convert('RGB')
    r0, g0, b0 = rgb_im.getpixel((20, 20))
    r1, g1, b1 = rgb_im.getpixel((40, 40))
    r2, g2, b2 = rgb_im.getpixel((60, 60))
    print(r0, g0, b0)
    print(r1, g1, b1)
    print(r2, g2, b2)