python-文件操作&模块&面向对象
python 文件处理
li = [['语文','数学','英语'],['','','']]
for i in li:
print(','.join(i))
# join字符串拼接 语文,数学,英语
100,122,123
从原文件末尾开始写入
# 方法一
with open('user_info.txt','r+',encoding='utf-8') as f:
f.read()
f.write('a1')
# 方法二
with open('user_info.txt','r+',encoding='utf-8') as f:
f.seek(0,2)
f.write('a2')
# 方法三
with open('user_info.txt','a',encoding='utf-8') as f:
f.write('a3')
# 删除原文件的内容
file.seek(0)
file.truncate()
# 重新设置文件读取指针到开头
fo.seek(0, 0)
# 重新设置文件读取指针到末尾
fo.seek(0, 2)
pymysql模块
import pymysql
# 建立连接
conn = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
password='',
db='db1',
charset='utf8'
)
# 拿到游标
cursor = conn.cursor()
sql = 'select * from course'
rows = cursor.execute(sql) res=cursor.fetchall()
print(res) try:
# 执行语句
cursor.execute(sql)
# 提交事物
conn.commit()
except Exception as e:
print(e)
# 事物的原子性
conn.rollback() cursor.close()
conn.close()
# fetchone(每次查询一个),fetchmany(查询多个),fetchall全部
正则表达式
# 正则表达式 就是用来匹配字符串的一种(语言)工具
# 它本身也有用自己的规则组成的一个字符串,他是用自己的方式去表达目标字符串
import re # 3中常用的匹配模式
#1、 re.match(pattern,string),匹配字符串开头的,当匹配不到信息时返回None
string='abcddddddefg123 python_3.5123abc'
# pattern = 'abc'
# ret = re.match(pattern,string)
# print(ret.group())
# print(ret.span()) #2、re.search(pattern,string) # 在字符串中间查找,返回第一个匹配的
# pattern='123'
# pattern='wu'
# ret = re.search(pattern,string)
# print(ret.groups())
# print(ret.span()) # 3、re.findall(pattern,string)# 根据规则将字符串中所有信息都提取出来,返回列表
# pattern = 'abc'
# ret = re.findall(pattern,string)
# print(ret) # 一、原子
# 时正则表达式中最小的单位
# 可以用普通字符做原子
# string = "http://www.baidu.com"
# pattern = 'baidu'
# print(re.findall(pattern,string))
#
# # 非打印字符做原子
# string = '''\nhttp://www.baidu.com/\n\thttp://www.baidu.com/\n'''
# pattern = '\n'
# print(re.findall(pattern,string)) # 通用字符做原子
# \d 匹配数值字符 0-9 \D 表示取反
# \w 匹配 字符 数字 中文 下划线, \W 取反
# \s 匹配空白字符 \S 表示取反
# .(点) 匹配除了换行符(\n)外所有字符 string = '''\nhttp://www456.baidu.com/\n\thttp://www123.baidu.com/\n'''
# pattern='\d'
# pattern='\D'
# pattern = '\s'
# print(re.findall(pattern,string))
# string='abcdefg123 python 3.5$中文\t\n'
# pattern = '\w\w\w\w\w\w\s\d.\d'
# print(re.findall(pattern,string)) # 二、原子表(制定指定的单个字符规则),用来表示一组字符,可以指定范围和内容
# ^ 表示取反,写在原子表的里面
# string = '2ython$ bcdefgcACV.67# cython@ 1234567890! python¥_3.5 Zython'
# pattern = '[\d\s]'
# print(re.findall(pattern,string))
# pattern = '[^1-3]'
# # pattern = '[1-3a-fA-Z]'
# pattern = '[.]'
# print(re.findall(pattern,string))
# 注意:整个原子表只能表示一位字符 # 练习,将上面字符穿着所有的特殊符号拿下来
# pattern = '[^\w\s.]'
# print(re.findall(pattern,string)) # 元字符
# 边界限定元字符
# ^ 目标在字符串的开头
# $ 目标在字符串的结尾
# \b 匹配单词边界
# \B 匹配非单词边界
# string = '123abcython$ abcdefgcACV# cython@ 1234567890!abc python¥_3.5 abcs'
# pattern = '^123'
# pattern = 'abc$'
# pattern = r'\babc'
# pattern = r'abc\b'
# # pattern = '\Babc'
# print(re.findall(pattern,string)) #次数限定元字符
# * 重复前面的一个字符 0 到 无穷次
# + 重复前面的一个字符 1 到无穷次,
# ?重复前面的一个字符 0 - 1 次
#{n} 重复前面的字符n次
#{n,} 重复前面的字符 n 到无穷次
#{n,m} 重复n 到 m 次
# string='123defg abc123python_abcdd_3.5abcddd'
# pattern = 'abcd*'
# pattern = 'abcd+'
# pattern = 'abcd?'
# pattern = 'abcd{3}' # abcddd
# pattern = 'abcd{2,3}'# abcdd abcddd
# print(re.findall(pattern,string)) # 模式选择符 |
# string1='abcdefg123 python_3.5abc运动python特php价 php'
# pattern = 'python|php'
# print(re.findall(pattern,string1)) # 模式单元符 () 小括号里面的表达式为1组
# string='abc#python#cdcdcdcdefg123 abc#python#php_3333.52322abcpython'
# pattern = '(cd)+'
# print(re.findall(pattern,string))
# 经常在其前后加个限定,但是只会打印括号中表达式目标,括号外的限定不会被打印
# pattern = '#(python)#'
# pattern = '#([a-z]+_?)(\d+.\d+)'
# print(re.findall(pattern,string)) # 贪婪模式 尽量多的匹配信息
# 懒惰模式 在有多个结束条件时,选择最前面的一个条件结束匹配
# string='abcddddddefg123 python_3.5123abc'
# pattern = 'abc.+123' # 贪婪模式
# print(re.findall(pattern,string))
# pattern = 'abc.+?123' # 懒惰模式
# print(re.findall(pattern,string)) # complie 编译正则表达式, 当正则表达式 重复多次使用时,避免重复编译
# re.S 让正则中 .(点) 能够匹配换行符
# re.I 忽略大小写
# pattern = re.compile('c.*123',re.S)
# print(re.findall(pattern,string))
# string='abcddddddefgA123 pythZon_3.5123abc'
# string2='abc#python#cdcdcdcdefg\n123 abc#python#php_3333.52322abcpython'
# print(re.findall(pattern,string2))
# pattern2 = re.compile('[a-z]',re.I)
# print(re.findall(pattern2,string)) # split() 可以指定匹配字符进行分割
# string = 'a1b2c3d4e5'
# print(string.split('1'))
# print(string.split('[0-9]'))# 正则表达式不起作用
# pattern = '[0-9]'
# ret = re.split(pattern,string,2)# 可以指定分割次数
# print(ret) #sub() 指定匹配字符进行替换
# string='a1 python b2c3d4 cython dython cython cython'
# pattern = '[pcd]ython'
# ret = re.sub(pattern,'php',string,3)# 指定替换次数
# print(ret) # 练习: 写正则判断ip地址是否合法 '255.167.200.175'
# 255.255.255.255 每一小段 0-255 之间均视为合法
# string = '255.167.a200.175fsfs255.167.200.175fdfsdf255.167.200.175'
# pattern = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}' # \ 让点号 转义下, 只能表示他自身
# pattern = '^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$'
# pattern = '([0-9.]{4})'
# print(re.findall(pattern,string)) # 练习:
# s='name:小明 age:12,name:小汪 age:3,name:小李飞刀 age:18 我说:哈哈哈 '
# ret = re.findall('name:(\w+) age:(\d+)',s)
# print(ret) # 判断输入的数字是否是手机号码 # 138-8888-6666
# phone = input("请输入一个手机号:")
# if re.match('1[356789]\d{9}',phone):
# print("是个手机号码")
# else:
# print("不是手机号码") # 用正则表达式 将字符串中的字符和数字符号替换掉,最终结果为"北风网 上海"
# string ="abcdefg 北风网 上海 404 not found"
# pattern = '[a-z0-9\s]'
# # print(re.findall(pattern,string))
# # print(re.sub('[a-z0-9]','',string).strip())
#
# # -----------------------------------------------------------------
# pattern = '[a-z0-9\s]'
# print(re.findall(pattern,string))
# # 这个正则的过程等价于下面的程序
# str1 = 'abcdefghijklmnopqrstuvwxyz'
# num = '0123456789'
# w = ' '
# target=[]
# for i in string:
# if i in str1 or i in num or i in w:
# target.append(i)
# print(target)
# ---------------------------------------------------------------- # pattern = re.compile("\s([一二三四五六七八九十]{1,3})\s{0,3}(\w{7})\s")
# f = open('D:\File_Class\倚天屠龙记.txt','r',errors='ignore')
# c = f.read()
# # print(c)
# t = re.findall(pattern,c)
# print(t)
# f.close()
面向对象
封装、继承、多态
python-文件操作&模块&面向对象的更多相关文章
- Python 文件操作模块 shutil 详解
1.导入模块 shutil import shutil 2.shutil方法 2.1 shutil.copy(src,dst) //将 src 复制到 dst 保留文件权限 例:将Alan复制到 ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- 初学Python——文件操作第二篇
前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...
- 小学生都能学会的python(文件操作)
小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...
- Python文件操作:文件的打开关闭读取写入
Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...
- 第十二章 Python文件操作【转】
12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...
- 第九章 Python文件操作
前一阵子写类相关的内容,把老猿写得心都累了,本来准备继续介绍一些类相关的知识的,如闭包.装饰器.描述符.枚举类.异常等,现在实在不想继续,以后再开章节吧.本章弄点开胃的小菜提提神,介绍Python中文 ...
- 第9章 Python文件操作目录
第9章 Python文件操作 第9.1节 Python的文件打开函数open简介 第9.2节 Python的文件打开函数open详解 第9.3节 Python的文件行读取:readline 第9.4节 ...
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
随机推荐
- layUI学习第二日:非模块化方法使用layUI
layUI采用非模块化方式(即所有模块一次性加载),操作示例代码如下(如果问怎么创建项目和工具,参考layUI学习第一日的步骤): 运行的结果如下: 运行的显示不会太持久,过几秒就会消失,具体封装的代 ...
- js正则高级函数(replace,matchAll用法),实现正则替换(实测很有效)
有这么一个文档,这是在PC端显示的效果,如果放在移动端,会发现字体大小是非常大的,那么现在想让这个字体在移动端能按照某个比例缩小,后台返回的数据格式是: <html> <head&g ...
- js获取url参数值的方法总结
1.方式一:通过字符串截取的方式获取参数值: 1).函数一:获取URL中的参数名及参数值的集合 /** * [获取URL中的参数名及参数值的集合] * 示例URL:http://htmlJsTest/ ...
- Python 相对路径和绝对路径--python实战(九)
一 背景信息 最近在运行python程序的过程中,无意遇到了这个一个问题,在同事那边一直执行ok的程序,到我这里怎么都有个错误,当初报的错误是这样的: FileNotFoundError: [Errn ...
- SQLServer临时库文件太大,迁移tempdb数据库
问题描述: 最近公司这边tempdb库文件很大,几百GB的节奏 不过安装数据库的时候,tempdb最好不要放在C盘是放在D盘其他数据盘的 如果没有放在其他盘符下面,就需要做迁移了 解决方法: 如果te ...
- linux学习之Ubuntu
查看自己的ubuntu版本,输入以下命令(我的都是在root用户下的,在普通用户要使用sudo)第一行的lsb是因为没有安装LSB,安装之后就不会出现这个东西.LSB(Linux Standards ...
- hibernate中的merge()方法
Hibernate提供有save().persist().savaOrUpdate()和merge()等方法来提供插入数据的功能.前三者理解起来较后者容易一些,而merge()方法从api中的介绍就可 ...
- python爬取昵称并保存为csv
代码: import sys import io import re sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') ...
- Google_PWA_ServiceWork_渐进式 Web 应用_给应用提供离线体验
前言:今天结识了google PWA提供的一个对移动端Web应用提供离线体验的一个功能,感觉很有用.我这里不分享自己的写法和代码.官网文档说的很详细,直接粘过来大家看吧. 推荐官网地址:你的第一个渐进 ...
- [笔记] .net core WPF 程序,发布独立程序与单一执行程序
如何发布独立可运行的,和只有一个文件的 .net core WPF 程序. 1 发布并打包 Step 1 在项目上右键,在菜单中选择发布,使用文件发布,选择独立部署模式,其它的条件,依照自己的情况设置 ...