python语法

1.python获取当前脚本文件的上一层目录

获得 main,py 上上层的路径

import os
print os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
解释下:

__file__:当前文件路径
os.path.dirname(file): 某个文件所在的目录路径
os.path.join(a, b, c,....): 路径构造 a/b/c
os.path.abspath(path): 将path从相对路径转成绝对路径

os.pardir: Linux下相当于"../"

import sys
import os
print "1"+os.path.dirname(os.path.abspath(__file__))
print "2"+sys.argv[0]
print "3"+os.path.abspath(__file__)
print "4"+os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print "5"+os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

该脚本绝对路径为/Users/root/Documents/code/python/test.py
在根目录下执行 [root@localhost /] python /Users/root/Documents/code/python/test.py 结果如下

1/Users/root/Documents/code/python
2/Users/root/Documents/code/python/test.py
3/Users/root/Documents/code/python/test.py
4/Users/root/Documents/code
5/Users/root/Documents

 综上可以得出如下结论

os.path.abspath(__file__)   获取当前脚本文件的绝对路径

os.path.dirname(os.path.abspath(__file__))  获取当前文件所在目录的绝对路径

os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  获取当前文件所在目录的绝对路径的上一层目录 
其中os.path.dirname 可以一直累加

2.python读取配置文件的方法

(1)配置文件如下的ini文件

  [db]

  aa="1"

  bb="2"

  [pass]

  cc="22"

  dd="33"

上述形式是标注的ini配置文件格式,可使用ConfigParser包来获取

import ConfigParser
conf = ConfigParser.ConfigParser()
conf.read('dbconf.ini')       # 文件路径
name = conf.get("section1", "name") # 获取指定section 的option值
print name
sex = conf.get("section1", "sex")  # 获取section1 的sex值
print age

  参考链接:http://www.jb51.net/article/87402.htm

如果配置文件没有中括号,也就是没有section的情况下,可以使用如下方法获取

db.conf文件如下所示

aa="11"

bb="22"

import ConfigParser
import StringIO
import os
import sys 

config =StringIO.StringIO()
config.write('[defaultsection]
')
config.write(open('db.conf').read())
config.seek(0,os.SEEK_SET)
conf = ConfigParser.ConfigParser()
conf.readfp(config)
aaa=conf.get('defaultsection', 'aa')

2 pycharm快捷键

http://blog.csdn.net/qq_18863573/article/details/74910975 

3.python多线程编程的问题

   join的作用

  让主线程阻塞,等待子线程结束,才能继续执行主线程

  setDaemon(True)

  将子线程添加了属性 setDaemon(True) 后,子线程就被设置为 守护进程,,当前子线程启动后,父进程同样执行下去,

  当父进程执行完毕后,直接退出了,不会等待子进程,同时子进程也结束

4 判断字符串中是否包含数字 英文字符,汉字等

有两种方式,可以综合使用any和isdigit方法:

>>> def hasNumbers(inputString):
...     return any(char.isdigit() for char in inputString)
... 
>>> hasNumbers("I own 1 dog")
True
>>> hasNumbers("I own no dog")
False

或者,可以使用正则表达式:

>>> import re
>>> def hasNumbers(inputString):
...     return bool(re.search(r'd', inputString))
... 
>>> hasNumbers("I own 1 dog")
True
>>> hasNumbers("I own no dog")
False
去掉数字可以使用 re.sub函数(替换函数)
>>>import re
>>>a = "test123"
>>print re.sub(r'd+','',a)
test
这样就可以把字符串中的数字去掉
举一反三 去掉字符串中的英文字母可以这样做;
>>>import re
>>>a = "test123"
>>print re.sub(r'[a-zA-Z]','',a)
123
这样就可以把字母替换为空,相当于删除

 5.string转json

json.loads()

原文地址:https://www.cnblogs.com/Kevin-1967/p/7365794.html