EML使用python语言写小算法
2017-09-13 本文已影响0人
yandaxin
最开始一直在查怎么把python程序编译打包成可以用java -cp使用的jar包,科科,愚蠢的我如此可爱。最后在微信群里问了一下,python程序直接将.py文件放到文件夹里压缩成zip文件,然后上传即可使用,CMD命令为python xx.py
,和在shell 里的命令一样。
需求可以参阅我的上一篇日志:用eclipse+maven为scala编写的源程序打jar包
话不多说,直接上代码:
# -*- coding: utf-8-*-
import fileinput
import sys
#read operation
inmatrix=""
for line in fileinput.input(sys.argv[1]):
inmatrix+=line
print(inmatrix)
numberofchar =inmatrix.count("#")
outflag=""
#check operation
if(numberofchar%2==0):
outflag="0"
print("矩阵行数是偶数,flag="+outflag)
else:
outflag="1"
print("矩阵行数是奇数,flag="+outflag)
print(outflag)
#write operation
file_out = open(sys.argv[2], 'w')
file_out.write(outflag)
file_out.close()
代码中最核心的就是怎么把文件作为参数传给.py文件,因为群里说CMD和在shell中执行命令一样,受到启发,搜索Python 获得命令行参数的方法,在shell中输入CMD命令python check.py matrixtest.txt result.txt
,其中check.py、matrixtest.txt、result.txt放在统一目录下。果然能够运行成功。
最后复习一下利用sys模块为.py脚本传参数:
#test.py import sys print "脚本名:", sys.argv[0] for i in range(1, len(sys.argv)): print "参数", i, sys.argv[i]
执行python test.py hello world 输出为:
脚本名:test.py
参数 1 hello
参数 2 world
也就是说sys.argv[0]默认是脚本的名字,sys.argv[1]是脚本获取的第一个参数,sys.argv[2]是第二个,依次类推。