文件操作
打开文件
# open 函数 用于文件的操作
file = open('ppp.txt','r',encoding='utf-8-sig') #打开文件
print(file.read()) #读取文件内容
file.close() # 关闭文件
# 不用了之后一定要关闭,释放在内存的空间
with open('ppp.txt','r',encoding='utf-8-sig') as file:
print(file.read())
文件路径
文件的路径分为相对路径和绝对路径两种。
- 绝对路径:指的是绝对位置,完整地描述了目标的所在地,所有目录层级关系是一目了然的。
- 相对路径:是从当前文件所在的文件夹开始的路径。
访问模式
# r 只读
# w 写
# b 二进制
# t 文本形式打开
# rb 以二进制读取
# rw 以二进制写入 (图片,视频,音频用二进制操作)
# a append 追加
# r+ 可读写
# w+ 可读写
读写
with open('ppp.txt','r',encoding='utf-8') as fp:
while True:
content = fp.readline()
print(content)
if content == '' :
break
with open('qqq.txt','w',encoding='utf-8') as fp:
fp.write('哈哈哈哈哈哈')
复制一个视频
new = open('abc.mp4','wb')
old = open('qq48.mp4','rb')
while True:
content = old.read(1024)
new.write(content)
if not content:
break
new.close()
old.close()
读写csv文件
import csv
#读取csv
with open('stock.csv','r') as fp:
reader = csv.reader(fp) #<class '_csv.reader'>
title = next(reader) #获取表头
#print(type(reader))
for x in reader:
print(x)
#print(title)
读取后转化成字典,并选择性输出:
import csv
with open('stock.csv','r') as fp:
reader = csv.DictReader(fp) #<class '_csv.reader'>
for x in reader:
print(x)
#print(reader)
value = {'name':x['secShortName'],'Vol':x['turnoverVol']}
print(value) #其一:{'name': '凌云B股', 'Vol': '215900'}
csv写入:
import csv
def write_csv():
headers = ['username','age','height']
values = [
('zhangsan',18,'175cm'),
('lisi',19,'178cm'),
('wangwu',20,'185cm'),
('zhaoliu',22,'165cm'),
]
with open('znmd_student.csv','w',encoding='utf-8',newline='') as fp:
write = csv.writer(fp)
write.writerow(headers)
write.writerows(values)
if __name__ == '__main__':
# 下面代码只在当前文件写入.py中运行
# 其他文件调用无效
write_csv()
import csv
def write_csv_demo2():
headers = ['username','age','height']
values = [
{"username":'张三','age':18,'height':'181cm'},
{"username":'李四','age':19,'height':'183cm'},
{"username":'王五','age':20,'height':'185cm'},
]
with open('znmd_class02.csv','w',encoding='utf-8-sig',newline='') as fp:
writer = csv.DictWriter(fp,headers)
writer.writeheader()
writer.writerows(values)
if __name__ == '__main__':
#下面的代码只在 12csv文件写入.py中运行
# 别的文件除非导入 之后调用 否则不运行
write_csv_demo2()
搜索引擎(插入)
bing.com 网址
“python” # 双引号 屏蔽广告
机器学习 filetype:pdf #指定类型
python site:bilibili.com #指定网站
json
http://apis.juhe.cn/simpleWeather/query?city=%E5%AE%9C%E6%98%8C&key=381c1a16a2ae73e7f72e8618ae21ee82
字典直接写入文件会报错:
person = {
'username':'shizu',
'age':18,
'height':'191cm'
}
# json
# 本质上是字符串
with open('kangbazi.txt','w',encoding='utf-8') as fp:
fp.write(person)
#write() argument must be str, not dict
需转成json(python字典转json):
import json #文件只能写入 字符串或二进制
person = {
'username':'shizu',
'age':18,
'height':'191cm'
}
# json
# 本质上是字符串
with open('kangbazi.txt','w',encoding='utf-8') as fp:
fp.write(json.dumps(person,ensure_ascii=False)) #ensure_ascii=False中文不转Ascii码
#{"username": "shizu", "age": 18, "height": "191cm"}
#json 键 全部是双引号 如果值是字符串 也是双引号括起来
json转python字典:
#json转python字典
data = json.dumps(person,ensure_ascii=False)
res = json.loads(data,encoding='utf-8')
print(res)
天气实例:
data = '{"reason":"查询成功!","result":{"city":"宜昌","realtime":{"temperature":"30","humidity":"79","info":"多云","wid":"01","direct":"东北风","power":"2级","aqi":"39"},"future":[{"date":"2021-07-10","temperature":"25\/30℃","weather":"多云","wid":{"day":"01","night":"01"},"direct":"东南风"},{"date":"2021-07-11","temperature":"25\/32℃","weather":"多云","wid":{"day":"01","night":"01"},"direct":"南风转东南风"},{"date":"2021-07-12","temperature":"23\/27℃","weather":"大雨转小雨","wid":{"day":"09","night":"07"},"direct":"东南风转东风"},{"date":"2021-07-13","temperature":"23\/28℃","weather":"小雨","wid":{"day":"07","night":"07"},"direct":"南风转东风"},{"date":"2021-07-14","temperature":"25\/34℃","weather":"小雨转多云","wid":{"day":"07","night":"01"},"direct":"东南风转东北风"}]},"error_code":0}'
# data = {
# "reason": "查询成功!",
# "result": {
# "city": "宜昌",
# "realtime": {
# "temperature": "30",
# "humidity": "79",
# "info": "多云",
# "wid": "01",
# "direct": "东北风",
# "power": "2级",
# "aqi": "39"
# },
# "future": [
# {
# "date": "2021-07-10",
# "temperature": "25/30℃",
# "weather": "多云",
# "wid": {
# "day": "01",
# "night": "01"
# },
# "direct": "东南风"
# },
# {
# "date": "2021-07-11",
# "temperature": "25/32℃",
# "weather": "多云",
# "wid": {
# "day": "01",
# "night": "01"
# },
# "direct": "南风转东南风"
# },
# {
# "date": "2021-07-12",
# "temperature": "23/27℃",
# "weather": "大雨转小雨",
# "wid": {
# "day": "09",
# "night": "07"
# },
# "direct": "东南风转东风"
# },
# {
# "date": "2021-07-13",
# "temperature": "23/28℃",
# "weather": "小雨",
# "wid": {
# "day": "07",
# "night": "07"
# },
# "direct": "南风转东风"
# },
# {
# "date": "2021-07-14",
# "temperature": "25/34℃",
# "weather": "小雨转多云",
# "wid": {
# "day": "07",
# "night": "01"
# },
# "direct": "东南风转东北风"
# }
# ]
# },
# "error_code": 0
# }
res = json.loads(data,encoding='utf-8')
print(res)
city = res['result']['city']
weathers = res['result']['future']
print(city)
#for weather in weathers:
# for key,value in weather.items():
# print(key,':',value)
# print(weather)
for index,weather in enumerate(weathers):# 列表的每个元素是字典
date = weather['date']
temperature = weather['temperature']
weather1 = weather['weather']
direct = weather['direct']
print(f'周{index+1}',date,temperature,weather1,direct)
# 周1 2021-07-10 25/30℃ 多云 东南风
# 周2 2021-07-11 25/32℃ 多云 南风转东南风
# 周3 2021-07-12 23/27℃ 大雨转小雨 东南风转东风
# 周4 2021-07-13 23/28℃ 小雨 南风转东风
# 周5 2021-07-14 25/34℃ 小雨转多云 东南风转东北风
正则表达式
# 处理字符串的
# 对字符串查找和替换
import re
text = '愿你与我立黄昏,愿你问我粥可温'
ret = '粥'
res = re.search(ret,text)
print(res.group()) #粥
手机号检验:
import re
text = input('请输入您的手机号:')
res = '1[3456789]\d{9}'
ret = re.match(res,text)
print(ret.group())