DeepSeek这么火Python读写properties文件
https://ai.51cto.com/act/deepseek/download?utm_source=blog
20140421
1. 三大利器:
dir----列出所有内部方法
a=1
dir(a) 可以列出所有内部方法,就是带两个下划线的;带一个下划线的是普通方法
help---查看帮助
help(a.bit_length)
type---查看数据类型
type(a)
2. str类型的神奇用法
|
源 |
结果 |
解释说明 |
|
"hello"+"world" |
"helloworld" |
连接 |
|
’hello‘*3 |
"hellohellohello" |
重复 |
|
“hello”[0] |
"h" |
第一个位置 |
|
"hello"[-1] |
"o" |
最后一个位置 |
|
"hello"[::-1] |
"olleh" |
反转 |
|
"hello"[1:4] |
"ell" |
取片段,右边界不包含 |
|
len("hello") |
5 |
求长度 |
|
"hello"<"jello" |
1 |
字符串比较 |
|
"e" in "hello" |
1 |
|
|
"escapes:\n etc,\033 etc, \if etc" |
|
|
|
'single quotes' '''triple quotes''' r''raw strings'' |
|
r''表示不会转义,正则表达式中多用 |
|
"The %s is %d" %('abc',12) |
|
|
3. 容器
- list ,包括:元素可变---[],元素异构---a=[33,"hiboy",["i', 'am"]]
常用list操作方法
|
操作 |
结果 |
解释说明 |
|
a = range(5) |
5 |
#[0,1,2,3,4] |
|
a.pop() |
None |
#[0,1,2,3,4] |
|
a.reverse() |
None |
#[4,3,2,1,0] |
|
a.sort() |
None |
#[0,1,2,3,4] |
|
a.insert(0,42) |
None |
#[42,0,1,2,3,4]在第一个位置插入42 |
|
a.append(['another','list']) |
None |
#[0,1,2,3,4,['another','list']] |
|
a.extend(['another','list']) |
None |
#[0,1,2,3,4,'another','list'] |
|
a=[0]*3 |
|
#[0,0,0] |
- tuple,元组 包括:元素不可变;元素异构:记住c(0,)逗号必须有,不然就认成别的了
- dict---key不可变,value可变 a={key:value};元素异构;
|
描述 |
解释说明 |
|
a={} |
空字典 |
|
b={'x':3,'y':4} |
|
|
c={' uid':105,'login':' beazley',' name':' David Beazley'} |
|
|
|
|
|
u=c[' uid'] |
获取一个元素值 |
|
c[' shell']="/bin/sh" |
赋值 |
|
c['login']=23 |
|
|
b.get('Perl','unknown') |
结果是:unknown |
|
b.keys() |
结果是:[x,y] |
|
b.values() |
[3,4] |
|
b.items() |
[('y',4),('x',3)] |
|
d=b.copy():del b['x'] |
b:{'y':4},d:{'x':3,'y':4} |
|
b[2]=3:b.update(d) |
b:{'y':4,2:3},d:{'x':3,'y':4,'2':3} |
dict常用于:遍历
4. 控制
- if 不多说了
- for有个神奇的地方:
else:#最终执行
print "End list"
- while不多说
break --终止当前循环
continue--终止本次循环
pass:什么事都不做
- 由于python不支持switch,故可以使用dict模拟switch:
5. 变量,无须声明,初始化等,id(变量名)能够识别是哪个变量的引用 a=1;b=1
6. 灵活无比的函数
deffuncname(arg1,arg2=0,*arg3,**arg4): #分别声明普通参数,元组参数,dict字典参数。一个函数中只可以有一个元组和一个字典
例如:
又如:
- 函数作用域规则:Local(局部) -> Global(全局) ->Built-in(内置)->NameError异常
- Python没有函数重载,因为函数是没类型的
- python函数可以返回多个值么?可以的 tuple
- 下面函数有什么问题?
- def func(in,out):print in.out out=2;有问题,关键字不可以用,会覆盖原有意义
核心库:
正则库
网络库
在线参考
标准库:http://docs.python.org/library/index.html
ppt中的作业,实现如下:遇到的问题是,&&要用and代替;range(m,n)是指从m开始到n-1;raw_input()返回的类型默认是string的,用在这里还需要用isdigit()转换一下,因此改用input();print(),打印后不换行,但有一个空格,还没找到好的去除方法
下面程序的输出是a,c. for each in alist:each相当于有一个指针。each指向第一个元素的时候,打印a;同时remove掉a;这时alist长度变化了,原先第一个元素变成了b;each指针向下走,变成了a;a被打印出来了。因此,这个程序的教训是:不要随意改变列表长度。
模块查找路径依次是:sys.path -- PYTHONPATH -- site-packages
接下来的程序是很常见的用于自测自定义程序是否work的:
包:包是一个目录树,每个目录下都有一个__init__.py文件
包工具:目前主要是pip;安装包:pip install/uninstall simplejson
类定义中的:
类方法classmethod:整个类只有这么一个方法,
例子:实现一个堆栈
类 - 继承
DeepSeek这么火
import re
import os
import tempfile
class Properties:
def __init__(self, file_name):
self.file_name = file_name
self.properties = {}
try:
fopen = open(self.file_name, 'r')
for line in fopen:
line = line.strip()
if line.find('=') > 0 and not line.startswith('#'):
strs = line.split('=')
self.properties[strs[0].strip()] = strs[1].strip()
except Exception, e:
raise e
else:
fopen.close()
def has_key(self, key):
return key in self.properties
def get(self, key, default_value=''):
if key in self.properties:
return self.properties[key]
return default_value
def put(self, key, value):
self.properties[key] = value
replace_property(self.file_name, key + '=.*', key + '=' + value, True)
def parse(file_name):
return Properties(file_name)
def replace_property(file_name, from_regex, to_str, append_on_not_exists=True):
tmpfile = tempfile.TemporaryFile()
if os.path.exists(file_name):
r_open = open(file_name, 'r')
pattern = re.compile(r'' + from_regex)
found = None
for line in r_open:
if pattern.search(line) and not line.strip().startswith('#'):
found = True
line = re.sub(from_regex, to_str, line)
tmpfile.write(line)
if not found and append_on_not_exists:
tmpfile.write('\n' + to_str)
r_open.close()
tmpfile.seek(0)
content = tmpfile.read()
if os.path.exists(file_name):
os.remove(file_name)
w_open = open(file_name, 'w')
w_open.write(content)
w_open.close()
tmpfile.close()
else:
print "file %s not found" % file_name
使用方式:
file_path = 'xxx.properties'
props = property.parse(file_path) #读取文件
props.put('key_a', 'value_a') #修改/添加key=value
print props.get('key_a') #根据key读取value
print "props.has_key('key_a')=" + str(props.has_key('key_a')) #判断是否包含该key
参考:
Python实用脚本(1):读取Properties文件
浙公网安备 33010602011771号