赞
踩
只需要在脚本文件开头加上一行文本申明模式
#! /usr/bin/env python[版本号]
再为文件附加执行权限
chmod +x [脚本名]
默认情况下Python 源码文件以 UTF-8 编码
但是如果你想为源文件选择一个另外的编码也是可行的。
# -*- coding: [编码格式] -*-
注:这个特殊的编码注释必须在代码文件的 第一或第二 行.
if [条件判断]:
[执行语句]
elif [条件判断]:
[执行语句]
elif [条件判断]:
[执行语句]
else:
[执行语句]
注:Python中没有switch或case语句,用if…elif…elif…代替
Python 中的 for
语句在任意序列 (列表或者字符串) 中迭代时, 总是按照元素在序列中的出现顺序依次迭代.
a = ["cat","dog","world"]
for x in a:
print(x,len(x))
如果需要的是一个数值序列,使用内建函式range()会很方便
for i in range(5)
print(i)
break:退出最近的循环
continue:退出本次循环
传入默认值
def ask_ok(prompt, retries=4, reminder='Please try again!'):
while True:
ok = input(prompt)
if ok in ('y', 'ye', 'yes'):
return True
if ok in ('n', 'no', 'nop', 'nope'):
return False
retries = retries - 1
if retries < 0:
raise ValueError('invalid user response')
print(reminder)
这个函数可以通过几种方式调用:
ask_ok('Do you really want to quit?')
ask_ok('OK to overwrite the file?', 2)
ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')
比较操作符 in
和 not in
校验一个值是否在(或不在)一个序列里。
is
和 is not
操作符 is
和 is not
比较两个对象是不是同一个对象,这只跟像列表这样的可变对象有关
例如 a < b == c
会校验是否 a
小于 b
并且 b
等于 c
。
and
和 or
也被称为 短路 运算符:它们的参数从左至右解析,一旦可以确定结果解析就会停止。
注:并且比较操作(或其他任何布尔运算)的结果都可以用 not
来取反,这些操作符的优先级低于比较操作符;在它们之中,not
优先级最高, or
优先级最低
迭代key,for key in d.迭代value,可以用`for value in d.values()`,如果要同时迭代key和value,可以用`for k, v in d.items()`
from collections import Iterable
isinstance([变量名], Iterable)
try...except...[except...except...except...]finally...
raise:捕获错误目的只是记录一下,便于后续追踪。但是,由于当前函数不知道应该怎么处理该错误,所以,最恰当的方式是继续往上抛,让顶层调用者去处理。好比一个员工处理不了一个问题时,就把问题抛给他的老板,如果他的老板也处理不了,就一直往上抛,最终会抛给CEO去处理。
def bar():
try:
foo('0')
except ValueError as e:
print('ValueError!')
raise
用print()
把可能有问题的变量打印
坏处:将来还得删掉它
凡是用print()
来辅助查看的地方,都可以用断言(assert)来替代
def foo(s):
n = int(s)
assert n != 0, 'n is zero!'
return 10 / n
def main():
foo('0')
assert
的意思是,表达式n != 0
应该是True
,否则,根据程序运行的逻辑,后面的代码肯定会出错。如果断言失败,assert语句本身就会抛出AssertionError的错误
坏处:程序中如果到处充斥着assert
。不过启动Python解释器时可以用-O(大写英文字母O)参数来关闭assert。关闭后所有的assert语句当成pass来看
logging
不会抛出错误,而且可以输出到文件
import logging
s = '0'
n = int(s)
logging.info('n = %d' % n)
print(10 / n)
logging.info()
就可以输出一段文本。运行,发现除了ZeroDivisionError
,没有任何信息。所以需要在import logging
之后添加一行配置。
import logging
logging.basicConfig(level=logging.INFO)
好处:
debug
,info
,warning
,error
等几个级别,当我们指定level=INFO
时,logging.debug
就不起作用了。同理,指定level=WARNING
后,debug
和info
就不起作用了logging
的另一个好处是通过简单的配置,一条语句可以同时输出到不同的地方,比如console和文件设置断点,单步运行
读文件:使用Python内置的open()
函数,传入文件名和标示符
f = open('/Users/michael/test.txt', 'r')
如果文件打开成功,就可以read()方法可以一次读取文件的全部内容,Python是读取内容到内存,用str对象来表示
f.read()
调用close()
方法关闭文件
f.close()
问题1:如果文件不存在会报IOError错误
解决1:try … finally
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
解决2:with
语句
with open('/path/to/file', 'r') as f:
print(f.read())
问题2:调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了。所以可以反复调用read(size)方法,每次最多读取size个字节的内容。
问题3:读取非文本文件
写文件:写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件
f = open('test.txt', 'w')
f.write('Hello, world!')
f.close()
版权声明:本文为博主原创文章,转载请注明出处!
https://me.csdn.net/qq_39657909
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。