sub(pattern, repl, string, count)
第一个参数:规则
第二个参数:替换后的字符串
第三个参数:字符串
第四个参数:替换个数。默认为0,表示每个匹配项都替换
re.sub("^s*|s*$","",字符串)两端
re.sub("^s*","",字符串)首
re.sub("s*$","",字符串)尾
# 遍历文件夹下面的所有文件及文件夹,如果是文件,则...如果是文件夹,则...
for i in os.listdir(path):
if os.path.isfile(os.path.join(path,i)):
print(os.path.join(path,i),"文件")
elif os.path.isdir(os.path.join( path,i)):
print(os.path.join(path,i),"文件夹")
目录子孙操作:
# os.path.exists()方法可以直接判断文件/文件夹是否存在
# os.path.isfile("test-data") 判断 test-data 是否文件
# os.path.isdir("hello") 判断 hello是否文件夹
# join:字符串拼接
# os.path.join() 路径拼接
os.mkdir("文件夹名称") 创建文件夹"文件夹名称"可以是绝对路径,也可以是相对路径
os.path.splitext(path) 分割路径,返回路径名和文件扩展名的元组
shutil.rmtree('E:\myPython\image-filter\test', ignore_errors=True)删除E:\myPython\image-filter\test下的所有文件目录及文件夹,并忽略错误
os.path.split(path): #把path分为目录和文件两个部分,以列表返回
os.path.sep:#路径分隔符(由于在Windows和Linux、Mac下路径分隔用的不同的符号,windows下用,linux用/。所以为了写的代码能在多系统上使用,我们尽量不要直接指定或者/来链接路径。
os.getcwd()返回当前工作目录
os.chdir()切换当前工作目录
os.path.abspath(path)获取文件的绝对路径
open("he.txt","w")创建一个文件
合法mode:r、rb、r+、rb+、w、wb、w+、wb+、a、ab、a+、ab+
read([size])
方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象
f = open("a.txt") lines = f.read() print lines print(type(lines)) f.close() 输出 Hello Welcome What is the fuck... <type 'str'> #字符串类型
readline()方法,从字面意思可以看出,该方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。
f = open("a.txt") line = f.readline() print(type(line)) while line: print line, line = f.readline() f.close() 输出 <type 'str'> Hello Welcome What is the fuck...
readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存
f = open("a.txt") lines = f.readlines() print(type(lines)) for line in lines: print line, f.close() 输出 <type 'list'> 2 Hello 3 Welcome 4 What is the fuck...
linecache模块
当然,有特殊需求还可以用linecache模块,比如你要输出某个文件的第n行:
# 输出第2行 text = linecache.getline(‘a.txt',2) print text,
.closed() 判断文件是否关闭
.close() 关闭文件
用法:
for path in os.listdir(path):
print(os.path.abspath(path))
.strip()去除两边空白字符
.lstrip()左边字符
.rstrip()右边
捕捉异常
try: 代码... except (异常一,异常二): 代码... finally : 一定执行该代码
自定义异常
a = "t" if a=="t": raise SystemError("刚刚好") //SystemError可以是其他系统内置错误警告,"刚刚好"可以是其他错误自定义提示
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
StopIteration | 迭代器没有更多的值 |
GeneratorExit | 生成器(generator)发生异常来通知退出 |
StandardError | 所有的内建标准异常的基类 |
ArithmeticError | 所有数值计算错误的基类 |
FloatingPointError | 浮点计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除(或取模)零 (所有数据类型) |
AssertionError | 断言语句失败 |
AttributeError | 对象没有这个属性 |
EOFError | 没有内建输入,到达EOF 标记 |
EnvironmentError | 操作系统错误的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
WindowsError | 系统调用失败 |
ImportError | 导入模块/对象失败 |
LookupError | 无效数据查询的基类 |
IndexError | 序列中没有此索引(index) |
KeyError | 映射中没有这个键 |
MemoryError | 内存溢出错误(对于Python 解释器不是致命的) |
NameError | 未声明/初始化对象 (没有属性) |
UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
RuntimeError | 一般的运行时错误 |
NotImplementedError | 尚未实现的方法 |
SyntaxError | Python 语法错误 |
IndentationError | 缩进错误 |
TabError | Tab 和空格混用 |
SystemError | 一般的解释器系统错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode 相关的错误 |
UnicodeDecodeError | Unicode 解码时的错误 |
UnicodeEncodeError | Unicode 编码时错误 |
UnicodeTranslateError | Unicode 转换时错误 |
Warning | 警告的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑的语法的警告 |
UserWarning | 用户代码生成的警告 |
打印捕捉异常:
import traceback traceback.print_exc()
print(traceback.print_exc()) 打印异常(其实traceback.print_exc()函数只是traceback.print_exception()函数的一个简写形式,而它们获取异常相关的数据都是通过sys.exc_info()函数得到的)
traceback.print_exc()由下面步骤实现:
import sys
exc_type, exc_value, exc_tb = sys.exc_info()
traceback.print_exception(exc_type,exc_value,exc_tb)