一、with语句
上下文管理器: 打开文件,执行完with语句内容之后,会自动关闭文件
对象
with open('/tmp/file') as f:
print(f.read())
## with语句的作用就相当于在open后面自动加上close
f = open('/tmp/file','r')
print(f.read())
f.close()
同时打开两个文件对象(这种写法在python2中不支持)
with open('/tmp/file') as f1,\
open('/tmp/file1','w+') as f2:
f2.write(f1.read()) ## 将第一个文件的内容写入第二个文件中
f2.seek(0) ## 移动指针到文件最开始
print(f2.read())
在python2中
不能同时用with打开俩个文件只能分别打开
with open('/tmp/passwd') as f1:
content = f1.read()
with open('/tmp/passwdbackup','w+') as f2:
f2.write(content)
文件操作练习
创建文件data.txt,共100000行,每行存放一个1~100之间的整数
用open 、 close的方式:
import random
f = open('data.txt','w+')
for i in range(100000):
f.write(str(random.randint(1,100)) + '\n')
f.seek(0)
print(f.read())
f.close()
使用with语句:
import random
with open('data.txt','w+') as f:
for i in range(100000):
f.write(str(random.randint(1,100)) + '\n')
f.seek(0)
print(f.read())
二、os模块
1.返回操作系统类型
值为:posix,表示linux操作系统 如果nt,是windows操作系统
import os
print(os.name)
2.操作系统详细信息
info = os.uname()
print(info) ## 显示当前操作系统的所有信息
print(info.sysname) ## 显示当前的操作系统
print(info.nodename) ## 显示当前主机名称
3.环境变量
print(os.environ) ## 显示当前系统环境变量
4.通过key值获取环境变量对应的value值
print(os.environ.get('PATH'))
三、操作系统
1.判断是否是绝对路径
import os
import random
from os.path import exists,splitext,join
print(os.path.isabs('/tmp/hello'))
print(os.path.isabs('hello'))
## 只会对路径进行判定,路径的目录或文件是否真是存在不影响判断结果
如上图所示可以准确判断是否是绝对路径,但文件或目录 ‘hello’是否存在不影响路径的判断
2.生成绝对路径
print(os.path.abspath('file')) ## 在当前路径下,生成存放file的绝对路径
print(os.path.join('/home/kiosk','file')) ## 用join的方法生成存放file的绝对路径
print(os.path.join(os.path.abspath('.'),'file'))
3.获取目录名或者文件名
filename = '/home/kiosk/PycharmProjects/20190622/day06/file'
获取路径中的文件名
print(os.path.basename(filename))
获取路径中的目录名
print(os.path.dirname(filename))
4.创建目录/删除目录
创建目录
os.mkdir('HAHA') ## 创建目录HAHA
创建递归目录
os.makedirs('img/file')
os.rmdir('HAHA')
6.文件重命名
os.rename('data.txt','data1.txt')
7.判断文件或目录是否存在
可以判断相对路径或绝对路径
返回的是bool值
print(os.path.exists('img'))
print(os.path.exists('HAHA'))
8.分离后缀名和文件名
print(os.path.splitext('data.txt'))
9.将目录名和文件名分离
print(os.path.split('/tmp/ips.txt'))
遍历目录
遍历指定目录下的所有内容
import os
from os.path import join
for root,dir,files in os.walk('/var/log'):
print(root) ## 打印该目录下的用户
print(dir) ## 打印该目录下的目录
print(files) ## 打印该目录下的文件
for name in files:
print(join(root,name))
四、时间之间的转换
把元组时间转换为时间戳
import time
import os
tuple_time = time.localtime()
print(tuple_time)
print(time.mktime(tuple_time))
把元组时间转换成字符串时间
print(time.strftime('%m-%d',tuple_time))
print(time.strftime('%Y-%m-%d',tuple_time))
print(time.strftime('%T',tuple_time))
print(time.strftime('%F',tuple_time))
## 时间显示格式的参数参照 date
将时间戳类型转换为字符串时间
pwd_time = os.path.getctime('/etc/passwd')
print('pwd_time',pwd_time)
print(time.ctime(pwd_time))
将时间戳转换为元组
print(time.localtime(pwd_time))
五、第三方模块
安装pip
导入qrcode生成二维码
import qrcode
img = qrcode.make('http://www.baidu.com')
img.save('hello.png')
执行完成没有报错就会在当前目录下生成一个图片文件hello.png,打开后就是我们生成的二维码
可能会提示缺少模块PIL错误,那就需要下载PIL模块
PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。
由于PIL仅支持到Python 2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python 3,又加入了许多新特性,因此,我们可以直接安装使用Pillow。
我这里安装的是python3,使用pip3下载,没有配置的可以直接cd到python3安装目录下的二进制文件直接执行
./pip3 install Pillow
python实现微信接口————itchat模块
import itchat
import time
import random
### 实现扫码微信临时登陆,加入hotReload=True参数可以保留一段时间,
该参数生成一个静态文件itchat.pk1用于存储登陆状态
itchat.auto_login(hotReload=True)
## 实现发送消息
while True:
# 发送消息或者文件给微信文件传输助手
# 发送消息
itchat.send('hello', toUserName='filehelper')
# 发送文件
itchat.send_file('/etc/passwd', toUserName='filehelper')
time.sleep(random.randint(1, 3))
## 需要有间隔时间的发送,不然会一直发
统计男女以及其他人数
## itchat的get_friends方法获取好友信息
friends = itchat.get_friends()
info = {}
for friend in friends[1:]:
if friend['Sex'] == 1:
info['male'] = info.get('male', 0) + 1
elif friend['Sex'] == 2: ## 男1女2
info['female'] = info.get('female', 0) + 1
else:
info['other'] = info.get('other', 0) + 1
print(info)
需求:给文件助手发送消息,执行发送的内容
1.如果执行成功,现实执行结果
2.如果执行失败,现实执行失败
import os
import itchat
@itchat.msg_register(itchat.content.TEXT,isFriendChat=True)
def text_reply(msg):
if msg['ToUserName'] == 'filehelper':
#获取要执行的命令内容
comand = msg['Content']
#系统执行代码
if os.system(comand) == 0:
res = os.popen(comand).read()
result = '[返回值]-命令%s执行成功,执行结果: \n' + res
itchat.send(result,'filehelper')
else:
result = '[返回值]-命令%s执行失败,请检查命令: \n' %(comand)
itchat.send(result,'filehelper')
itchat.auto_login()
itchat.run()