怎么向python脚本运行py文件传递数据并启动这个py脚本生成mat文件?

简单Python脚本实现数据导出Excel格式的尝试
简单Python脚本实现数据导出Excel格式的尝试
游戏客户端开发
& & & 实习期间,服务器的一位师兄让我帮忙整理一下服务器的log数据,最终我用Python实现了数据的提取并将其用Excel格式导出。下面是我Python实现的源码,可以自动遍历某一文件目录下的所有文本文件,并将总的数据导出到Excel文件中,导出为Excel格式这样就比较方便统计了。
& & //实现将目录下所有文件格式为.txt的文件进行遍历统计,如果是别的格式直接将下面的.txt改为你所需要的格式后缀就可以了,比较方便。
& &//过程就是先将所有的文件中的内容提取出来写入到一个新文件中,然后再从新文件中提取数据,最后将数据写入到Excel文件中
& from pyExcelerator import *
currentpath = os.getcwd()&
testlog = open('test.mak','w')&
os.mkdir(r'Excel')&
print &currentpath: &,currentpath&
for file in os.listdir(currentpath):
if os.path.isfile(os.path.join(currentpath,file))==True:
if file.find('.txt')&0: & //如果是别的格式直接将下面的.txt改为你所需要的格式后缀就可以了
file_ = open(file,'r')
content = file_.read() &&
file_.close() & &
testlog.write( content ) &
os.popen('log_parse.exe &test.mak && shuju.log')
for _file in os.listdir(currentpath):
if os.path.isfile(os.path.join(currentpath,_file))==True:
if _file.find('.log')&0:
work = Workbook()&
works = work.add_sheet('Sheet1')&
file_object = open(_file)
for i in range(0,2):
works.col(i).width = 10000
for &line in file_object:
line = line.rstrip('\n')
if not line.split():
i = i + 1
if line.strip():
array = line.split(':')
lineleft = array[0]
lineright = array[1]
works.write(i,0,lineleft)
works.write(i,1,lineright)
i = i + 1
_file = _file.rstrip('.log')
_file = 'Excel\%s.xls' % _file
work.save(_file)
& & //其中的print &1 2 3 4 是我打的log如果不想要可以直接删掉。
使用该Python实现时直接将上面代码保存到&test.py的文件中就行了。
& & &另外中间使用到了一个c++的提取可执行文件log_parse.exe,放在下面了。使用时将其与test.py放在同一目录下就可以了。
& & 如果想方便的话可以建一个.bat文件写成命令行的形式,直接点击一下就可以自动完成所有的工作了,如下:
& &python test.py
& &我自己的实现是大约150M文件跑了一分半的时间出结果,我认为还比较理想。
我的热门文章
即使是一小步也想与你分享python脚本实现数据导出excel格式的简单方法(推荐)
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
作者 红领巾 ]
实习期间,服务器的一位师兄让我帮忙整理一下服务器的log数据,最终我用实现了数据的提取并将其用Excel格式导出。下面是我Python实现的源码,可以自动遍历某一文件目录下的所有文本文件,并将总的数据导出到Excel文件中,导出为Excel格式这样就比较方便统计了。//实现将目录下所有文件格式为.txt的文件进行遍历统计,如果是别的格式直接将下面的.txt改为你所需要的格式后缀就可以了,比较方便。//过程就是先将所有的文件中的内容提取出来写入到一个新文件中,然后再从新文件中提取数据,最后将数据写入到Excel文件中from pyExcelerator import *import oscurrentpath = os.getcwd() testlog = open('test.mak','w') os.mkdir(r'Excel') print "currentpath: ",currentpath for file in os.listdir(currentpath):if os.path.isfile(os.path.join(currentpath,file))==True:if file.find('.txt')&0: //如果是别的格式直接将下面的.txt改为你所需要的格式后缀就可以了file_ = open(file,'r')content = file_.read() file_.close() testlog.write( content ) print 1os.popen('log_parse.exe test.mak && shuju.log')print 2for _file in os.listdir(currentpath):if os.path.isfile(os.path.join(currentpath,_file))==True:if _file.find('.log')&0:work = Workbook() works = work.add_sheet('Sheet1') print 3file_object = open(_file)for i in range(0,2):works.col(i).width = 10000i = 0for line in file_object:line = line.rstrip('\n')print 4if not line.split():i = i + 1if line.strip():array = line.split(':')lineleft = array[0]lineright = array[1]works.write(i,0,lineleft)works.write(i,1,lineright)i = i + 1_file = _file.rstrip('.log')_file = 'Excel\%s.xls' % _filework.save(_file)//其中的print& 1 2 3 4 是我打的log如果不想要可以直接删掉。 使用该Python实现时直接将上面代码保存到 test.py的文件中就行了。另外中间使用到了一个c++的提取可执行文件log_parse.exe,放在下面了。使用时将其与test.py放在同一目录下就可以了。&如果想方便的话可以建一个.bat文件写成命令行的形式,直接点击一下就可以自动完成所有的工作了,如下:&& echo && python test.py 我自己的实现是大约150M文件跑了一分半的时间出结果,我认为还比较理想。以上这篇python脚本实现数据导出excel格式的简单方法(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
本文开发(python)相关术语:python基础教程 python多线程 web开发工程师 软件开发工程师 软件开发流程
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
CodeSecTeam微信公众号
有时候,你需要出去走一走,呼吸一下新鲜空气,然后提醒自己,你是谁?想成为什么样的人?
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.netPython 文件和输入输出小结
字体:[ ] 类型:转载 时间:
Python 是面向对象编程语言,文件也是一种类,下面简单介绍下,方便需要的朋友
1.打开和关闭文件(open(),file(),close())
有两种内建函数可以获取文件对象:open和file。他们的用法完全一样。下面只以open()为例子讲解。获取一个文件对象(打开文件)的语法如下:&&&&&&&
代码如下:fileObj = open(filename,access_mode='r',buffering=-1)&
filename不用说你也应该知道是你要打开文件的路径。 access_mode用来标识文件打开的模式,默认为r(只读)。
常用的模式如下表所示:
以只读方式打开
以写方式打开,文件不为空时清空文件;文件不存在时新建文件。
追加模式,没有则创建
以读写模式打开,参见w,a另外还有一个b表示二进制模式访问,但是对于Linux或者unix系统来说这个模式没有任何意义,因为他们把所有文件都看作二进制文件,包括文本文件。
第三个参数不经常用到,标识访问文件的缓冲方式,0代表不缓冲,1代表缓冲一行,-1代表使用系统默认缓冲方式。只要使用系统默认就好。
一些例子:
代码如下:&&& f = open('/etc/passwd','r')&&& f1 = open('/etc/test','w')
使用完文件后,一定要记得关闭文件,操作如下:
代码如下:&&& f.close()
2.文件读入
2.1.file.read(size = -1) &&& 读取从当前文件游标起size个字节的文件内容。如果size=-1,则读取所有剩余字节。
代码如下:&&& f = open('/etc/passwd')&&& f.read(100)'root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nol'
2.2.file.readlines(size=-1)
&&& 从文件中读取并返回一行(包括行结束符),或返回最大size个字符
代码如下:&&& f.readline()'ogin\n'#和上面一个例子输出的最后拼起来就是 &'nologin',因为游标在l后面。&&& f.readline(1)'a'
2.3.file.readlines(sizhint=0)&&& 读取文件所有的行,并作为一个列表返回(包括行结束符),如果sizhint&0则返回总和大约sizhint字节的行(具体由缓冲区大小决定)。
代码如下:f.readlines()['dm:x:3:4:adm:/var/adm:/sbin/nologin\n', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n', 'sync:x:5:0:sync:/sbin:/bin/sync\n', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\n', 'halt:x:7:0:halt:/sbin:/sbin/halt\n', 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\n', ......
输出省略。
3.文件输出3.1.file.write(str)&&& 向文件中写入指定的字符串。
代码如下:&&& f = file('/root/test.py','w+')&&& f.write("print 'hello,world'")&&& f.read()''&&& f.close()&&& file('/root/test.py','r').read()"print 'hello,world'"
3.2.file.write(seq)
&&& 向文件写入字符串序列seq。seq是任何返回字符串的可迭代对象。
代码如下:&&& f = file('/root/test.py','a+')&&& codelst = ['\n','import os\n',"os.popen('ls').read()\n"]&&& f.writelines(codelst)&&& f.close()&&& file('/root/test.py','r').read()"print 'hello,world'\nimport os\nos.popen('ls').read()\n"
注意,文件写入的时候,不会自动加上换行符,必须手动加上。
4.文件移动
&&& 学过C语言的同学,一定对fseek()函数不陌生,在Python中,seek()方法是fseek()的替代者。
&&& seek(offset,whence=0)&&& 方法可以将文件游标移动到文件的任意位置。其中offset代表需要移动的偏移字节数,whence表示要从哪个位置开始偏移:&&& 0代表从文件开头开始算起,&&& 1代表从当前位置开始算起,&&& 2代表从文件末尾算起。
&&& 那我们如何知道当前文件游标在哪里呢?别担心,这里有个tell()方法可以返回当前文件游标的位置。
5.文件迭代
&&& 在Python中,文件不仅仅是一个对象,而且是一个可迭代对象!我们可以利用如下迭代方式,轻松的访问和处理文件内容,而不必全部读出(readlines)后再迭代(性能上差了很多哦!)
代码如下:for eachline in f:&&& #dealwith eachline of f
代码如下:&&& for eachline in f:...&&&& print eachline
6.os、os.path与文件os和os.path中提供了一些跟文件有关的接口,下面介绍一些常用的接口。其他接口可以自己查阅相关文档。
注意:以下函数传入的参数都是字符串形式的文件名字,文件名可由文件对象的name属性获得。
os.path.basename()
去掉目录路径,返回文件名
os.path.dirname()
去掉文件名,返回目录路径
os.path.getatime()os.path.getctime()os.path.getmtime()os.path.size()
返回文件的atime,ctime,mtime和大小
os.path.exists()
该文件或目录是否存在
os.path.abs()
指定路径是否为绝对路径
os.path.isdir()
路径是否存在且为目录
os.path.isfile()
路径是否存在且为文件。
os.path.islink()
指定路径是否存在且为一个符号链接 代码如下:&&& import os.path&&& f = open('/root/test.py','r')&&& os.path.basename(f.name)'test.py'&&& f.name'/root/test.py'&&& os.path.getsize(f.name)52&&& os.path.isabs(f.name)True&&& os.path.isdir(f.name)False
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具python的setup.py文件
最近工作需要,用Cython写了*.pyx扩展,并将其编译成C文件,最后转换为so扩展,供python引用
使用 distutils 编译,建立一个setup.py
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
name = 'cython_build_test’,
cmdclass = {'build_ext':build_ext},
ext_modules = ext_modules
关于setup函数的一些参数:
site-package安装目录下的egg文件:/usr/lib64/python2.6/site-packages/cython_build_test-0.0.0-py2.6.egg-info,如果不指定,将会与UNKNOW命名:/usr/lib64/python2.6/site-packages/UNKNOWN-0.0.0-py2.6.egg-info
2、packages告诉Distutils需要处理那些包(包含__init__.py的文件夹)
3、package_dirs告诉Distutils哪些目录下的文件被映射到哪个包。一个例子:package_dir
= {‘’:lib},表示“root package”中的模块都在lib目录4、ext_modules是一个包含Extension实例的列表,Extension的定义也有一些参数,定义如下
5、ext_package定义extension的相对路径
6、requires定义依赖哪些模块
7、provides定义可以为哪些模块提供依赖
8、scripts指定python源码文件,可以从命令行执行。在安装时指定—install-script
9、package_data通常包含与包实现相关的一些数据文件或类似于readme的文件。如果没有提供模板,会被添加到MANIFEST文件中。
10、data_files指定其他的一些文件(如配置文件)
关于ext_modules参数详细说明:
定义Extension实例列表,
扩展包的名字,供python导入impZ喎"/kf/ware/vc/" target="_blank" class="keylink">vcnTKscq508M8L3N0cm9uZz48YnI+CjxzdHJvbmc+MqGic291cmNlPC9zdHJvbmc+PGJyPgo8c3Ryb25nPtS0zsS8/tfps8m1xMHQse2jrNS0zsS8/r/J0tTKx0OjrEMmIzQzOyYjNDM7tcjM2LaotcTXytS0zsS8/qOsu/LIzrrOxuTL+9PJYnVpbGRfZXh0w/zB7si3yM/OqsC01LTOqlB5dGhvbsCp1bmhozwvc3Ryb25nPjxicj4KPHN0cm9uZz4zoaJsYW5ndWFnZTwvc3Ryb25nPjxicj4KPHN0cm9uZz7AqdW50+/R1MP7s8Y8L3N0cm9uZz48YnI+CjxwPjxzdHJvbmc+NKGiaW5jbHVkZV9kaXJzPC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPszhuanL0cv3Qy9DJiM0MzsmIzQzO823zsS8/rXExL/CvNfps8m1xMHQse2jqLHIyOejuiouaKOpPC9zdHJvbmc+PC9wPgo8cD48c3Ryb25nPjxpbWcgc3JjPQ=="" alt="\">
5、library_dirs
提供搜索C/C++库文件的目录组成的列表(比如:*.a)
6、libraries
库名(不是文件名或路径)的组成的列表
简单的setup.py文件:
运行setup.py,传递参数build_ext,选项—inplace
python setup.py build_ext —inplace
系统报告:
running build_ext
cythoning import_cython_c_math.pyx to import_cython_c_math.c
building "import_cython_c_math' extension
creating build
creating build/temp.linux-x86_64-2.6
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.6 -c import_cython_c_math.c -obuild/temp.linux-x86_64-2.6/import_cython_c_math.o
gcc -pthread -shared build/temp.linux-x86_64-2.6/import_cython_c_math.o -L/usr/lib64 -lpython2.6 -o /home/linshaowei/cython_setup_test/import_cython_c_math.so
当前目录下自动创建了:
进入到build目录里,有一个目录: temp.linux-x86_64-2.6,该目录里面存放了import_cython_c_math.o文件,该文件是c代码编译之后的包含0,1指令的对象文件(即c语音编译之后的文件)
import_cython_c_math.so,其次是生成供python直接引用的动态链接库,是一个链接文件
此时就可以在python引用该库文件了。
运行setup.py,传递参数build(编译)
python setup.py build
running build
running build_ext
cythoning import_cython_c_math.pyx to import_cython_c_math.c
building 'import_cython_c_math' extension
creating build
creating build/temp.linux-x86_64-2.6
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.6 -c import_cython_c_math.c -o build/temp.linux-x86_64-2.6/import_cython_c_math.o
creating build/lib.linux-x86_64-2.6
gcc -pthread -shared build/temp.linux-x86_64-2.6/import_cython_c_math.o -L/usr/lib64 -lpython2.6 -o build/lib.linux-x86_64-2.6/import_cython_c_math.so
当前目录下自动创建了:
进入到build目录,有两个目录:
lib.linux-x86_64-2.6该目录里面存放:import_cython_c_math.so文件
temp.linux-x86_64-2.6该目录里面存放:import_cython_c_math.o文件
sudo python setup.py install(安装)
running install
running build
running build_ext
skipping 'import_cython_c_math.c' Cython extension (up-to-date)
running install_lib
copying build/lib.linux-x86_64-2.6/import_cython_c_math.so -> /usr/lib64/python2.6/site-packages
running install_egg_info
Writing /usr/lib64/python2.6/site-packages/cython_build_test-0.0.0-py2.6.egg-info
install参数,将动态链接文件 build/lib.linux-x86_64-2.6/import_cython_c_math.so创建了软链接/usr/lib64/python2.6/site-packages
再写入Writing /usr/lib64/python2.6/site-packages/cython_build_test-0.0.0-py2.6.egg-info python安装目录,生成了egg文件并存放到安装目录,就意味着python可以随处引用它
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 向python脚本传递参数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信