设为首页 收藏本站
查看: 561|回复: 0

[经验分享] python扫盲0

[复制链接]

尚未签到

发表于 2017-4-23 13:12:38 | 显示全部楼层 |阅读模式
  hello world太简单,看不出语法,写个长点的,也算对python的语法有大概的了解了,哈哈哈。
  功能:root是找到没有被包含的头文件,allh是看一个源文件都包含了哪些头文件。
  没啥用,当练手。

 
#!/usr/bin/python
#python code practice for include discovery

import os
pre = "#include"
def compact(str):
#local variable assignment before referenced
l = len(str)
i = 0
res = ""
while i < l:
if str != ' ' and str != '\n':
res += str
i = i + 1
return res
def geth_in_str(str):
res = set()#init set
l0 = len(str)
l1 = len(pre)
i = 0
while i + l1 + 2 <= l0:
c = 'x'
if str[i + l1] == '"':
c = '"'
elif str[i + l1] == '<':
c = '>'
else:
i = i + 1
continue
if str[i : i + l1] == pre:
#substr[i, i + l1)
j = i + l1 + 1
while j < l0:
if str[j] == c:
res.add(str[i + l1 + 1 : j])
break
j = j + 1
if j < l0:
i = j
i = i + 1
return res
def geth_in_file(fn):
fd = open(fn, "r")
text = fd.read()
text = compact(text)
res = geth_in_str(text)
fd.close()
return res
def print_hset(hs):
for e in hs:
print e
def hroot(dn):
all = set()
ex_all = set()
tp = os.walk(dn).next()
#to generates tuples (parent, dirnames, filenames),
#and .next() to get the first
for file in tp[2]:
l = len(file)
if l > 1 and file[l - 1] == 'h' and file[l - 2] == '.':
all.add(file)
ex_all = ex_all | geth_in_file(file)
#set operation
print ex_all
res = all - ex_all
return res
def main():
print "h helper begin...."
while True:
cmd = raw_input("input cmd:\n")
#raw_input a string, and input a int or float
if cmd == "q" or cmd == "quit":
break
if cmd == "root":
#show .hs in the dir of which is not included
dn = raw_input("input dir:\n")
print
res = hroot(dn)
print_hset(res)
elif cmd == "allh":
#show .hs included by the file
fn = raw_input("input file:\n")
print
res = geth_in_file(fn)
print_hset(res)
print

if __name__ == "__main__":
main()
 



root@152.41 hnet>ls
A.h  B.h  C.h  h.py
root@152.41 hnet>cat A.h
#include "B.h"

#include <C.h>
root@152.41 hnet>cat B.h
#include <iostream>
root@152.41 hnet>cat C.h
#include "sys/haha.h"
root@152.41 hnet>./h.py
h helper begin....
input cmd:
root
input dir:
./

set(['B.h', 'iostream', 'C.h', 'sys/haha.h'])
A.h

input cmd:
allh
input file:
A.h

B.h
C.h

input cmd:
allh
input file:
B.h

iostream

input cmd:
allh
input file:
C.h

sys/haha.h

 

 

补充:如果文件open太多,漏了close,程序会死掉的。

root@152.41 test>ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 210944
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 131072
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


 这里可以看到最多可以打开65535个file。

可以用ulimit -n xxx进行修改。这个没啥好改的,栈大小可以改改。

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-368198-1-1.html 上篇帖子: python challenge 6 下篇帖子: python与web
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表