-----------------------------------占位符----------------------------------------
print '------%s---------%d--------%s-------' % ('ME',5,u'岁了')
'---字符串---{ }---字符串---{ }---字符串---{ }'.format(x1,x2,x3) #{ }中填x1,x2,x3 ,每个{ }是一个整体,{ }中自己定义。比上面的好用
----------------------------------------时间--------------------------------------
当地时间:
time.strptime(a,'%Y-%m-%d %H:%M:%S')
b = time.mktime(time.strptime(a,'%Y-%m-%d %H:%M:%S'))
print b
(1)time与datetime
a、时间戳
b、格式化的时间字符串
c、元组(struct_time)共九个元素
方法:time.time()时间戳
time.clock
time.sleep() 睡几秒
time.gmtime()转换成元组(格林威治时区)
time.localtime()转成元组(本机时区)
time.mktime()元组转换成时间戳
time.strftime()元组转换成字
time.strptime()字符串转成元组(注意一一对应关系)
asctime()元组转成字符串(特定格式)
ctime()时间戳转成字符串(特定格式同上)
.. 相对路径 父目录
cd 进入(change direction)
c: 进入跟目录
fileName =fileDirec.replace("\\", "/")
fileDirec = direc + '\\' + file_name
s_path = 'D:/blog/'
if not os.path.isdir(s_path):
----------
if country is None:
if country is not None:
----------
截取正则表达式后面的字符([1]):
if re.search(r'68 [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] 68 11',line):
matchObj = re.search(r'68 [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] [0-9][0-9] 68 11',line).group()
line.split(matchObj)[1][3:15]
----------
#!/usr/bin/python相当于写死了python路径;
#!/usr/bin/env python会去环境设置寻找python目录,推荐这种写法
----------
python2 默认ascii编码,python3默认utf-8编码。所以python3不用每个文件头加#coding=utf-8
----------
原生字符串 与 文件夹路径
root = "d:\\pic\\" 不用原生字符串时,字符串中每个字符前都要加\
root = r"d:\pic1\\" \\" 不能写成\",输出:d:\pic1\\
root1 = r"d:\pic1" + "\\"
root3 = "d:\pic1\\"
root1、root3输出:d:\pic1\
--
mkdir 用于创建文件夹,而不是文件。创建文件用open(),写入内容来创建文件
root = r"d:\pic1\\"
path = root + url1.split(r'/')[-1]
os.mkdir(root)
with open(path,"wb+") as f:
f.write(r.content)
print("保存成功")
-----调试技巧-----
raise 关键字;对Exception函数的调用
raise Exception('This is the error message.')
if len(symbol) != 1:
raise Exception('Symbol must be a single character string.') #raise抛出错误
def boxPrint(symbol, width, height):
if len(symbol) != 1:
raise Exception('Symbol must be a single character string.')
if width <= 2:
raise Exception('Width must be greater than 2.')
if height <= 2:
raise Exception('Height must be greater than 2.')
print(symbol * width)
for i in range(height - 2):
print(symbol + (' ' * (width - 2)) + symbol)
print(symbol * width)
for sym, w, h in (('*', 4, 4), ('O', 20, 5), ('x', 1, 3), ('ZZ', 3, 3)):
try:
boxPrint(sym, w, h)
except Exception as err: #err 代表上述raise抛出的错误
print('An exception happened: ' + str(err))
assert 1==2,print("failed") #assert用法的例子
assert,try ...except 区别:assert产生错误,程序会终止,try...except不会终止,程序会跳过try中的代码块,继续运行。assert是针对程序员,断言是针对开发的,不是针
对最终产品
,try...except针对用户
断点不要设置在for while这样的循环上,因为F8执行到下一个断点,进行下一次循环。相当于此处打了多个断点
调用栈 包括在 反向跟踪(traceback) 中,调用栈,函数调用关系:从上到下,从下往上,函数被调用。程序最终出错在调用栈的最下面。
反向跟踪写入文件:errorFile.write(traceback.format_exc())
----------
os.system(command)
>>> os.system('notepad')
0 # 关闭记事本后的返回值
# 向记事本传递参数,打开python.txt文件
>>> os.system('notepad python.txt')
os.system(sys.argv[1])
sys.argv[1]表示cmd接收的第一个参数。 比如输入notepad,则打开记事本
----------------正则表达式----------------
rst = re.search(r'[1-9]\d{5}','BIT 100081') #筛选邮编地址
等价于:
pat = re.compile(r'[1-9]\d{5}')
rst = pat.search('BIT 100081')
编号为0的group,始终代表匹配的整个字符串;
你在正则表达式内所看到的,通过括号括起来的group,编号分别对应着1,2,3,…
----------
----------文件读写权限------------------
+ 读写模式
b 二进制模式
a 追加模式
r 只读模式
w 只写模式
没有rw, 是r+ 或者w+
详细如下:
******************************
r 以只读方式打开文件。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
******************************
-----文件读写-----
----------
----------
----------
----------
----------