python第6天,python的遍历和第三方模块。

####上下文管理器: 打开文件,执行完with语句内容之后,会自动关闭文件对象

with open('/tmp/passwd') as f: #上下文管理器: 打开文件,执行完with语句内容之后,会自动关闭文件
    print(f.read())             #f是变量,度却变量并输出
with open('/tmp/passwd') as f1,open('/tmp/passwdbackup','w+') as f2: #打开两个变量
    f2.write(f1.read())                            #将f1读取的写入f2中
    f2.seek(0)                                     # f2将光标移到开始
    print(f2.read())                               #读取f2中的内容

python第6天,python的遍历和第三方模块。_第1张图片
##创建文件data.txt,共100000行,每行存放一个1~100之间的整数

import random                                     #加载随机模块
f = open('data.txt',mode='w+')                    #打开文件,以读的方式
for i in range(100000):                           #循环100000次
    f.write(str(random.randint(1,100)) + '\n')    #每循环一次随机数摇一次,范围在1-100,一共100000次,然后要换行
f.seek(0)                                         #将f的光标放到开始
print(f.read())                                   #将读取的内容输出
f.close()                                         #关闭

python第6天,python的遍历和第三方模块。_第2张图片

#1.返回操作系统类型

import os    #值为:posix,表示linux操作系统 如果nt,是windows操作系统
print(os.name)
info = os.uname()             #系统的所有名字
print(info)
print(info.sysname)           #系统的名称
print(info.nodename)          #主机名
print(info.release)           #内核
print(info.version)           #版本号
print(info.machine)           #硬件架构

##结果

posix
posix.uname_result(sysname='Linux', nodename='foundation71.ilt.example.com', release='3.10.0-514.el7.x86_64', version='#1 SMP Wed Oct 19 11:24:13 EDT 2016', machine='x86_64')
Linux
foundation71.ilt.example.com
3.10.0-514.el7.x86_64
#1 SMP Wed Oct 19 11:24:13 EDT 2016
x86_64

python第6天,python的遍历和第三方模块。_第3张图片

import os #值为:posix,表示linux操作系统 如果nt,是windows操作系统
print(os.environ) #环境变量
print(os.environ.get(‘PATH’)) #通过key值获取环境变量对应的value值.因为environ是以字典的形式输出的。可以用get
##结果

environ({'PATH': '/home/kiosk/PycharmProjects/python/venv/bin:/usr/local/python3/bin:/usr/local/python3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/kiosk/.local/bin:/home/kiosk/bin', 'XAUTHORITY': '/run/gdm/auth-for-kiosk-H1dEqN/database', 'LC_MEASUREMENT': 'zh_CN.utf8', 'IMSETTINGS_MODULE': 'IBus', 'HISTCONTROL': 'ignoredups', 'NO_PROXY': 'localhost,127.0.0.0/8,::1', 'XMODIFIERS': '@im=ibus', 'GDMSESSION': 'gnome-classic', 'LC_TIME': 'zh_CN.utf8', 'DBUS_SESSION_BUS_ADDRESS': 'unix:abstract=/tmp/dbus-5N8zwBCXKg,guid=2a50aa068ce4f0fcdebfb2945d781030', 'PS1': '(venv) ', 'XDG_CURRENT_DESKTOP': 'GNOME-Classic:GNOME', 'MAIL': '/var/spool/mail/kiosk', 'SSH_AGENT_PID': '1657', 'USERNAME': 'kiosk', 'SESSION_MANAGER': 'local/unix:@/tmp/.ICE-unix/1493,unix/unix:/tmp/.ICE-unix/1493', 'LC_PAPER': 'zh_CN.utf8', 'LOGNAME': 'kiosk', 'PWD': '/home/kiosk/PycharmProjects/python', 'PYCHARM_HOSTED': '1', 'WINDOWID': '33554439', 'PYTHONPATH': '/home/kiosk/PycharmProjects/python', 'LESSOPEN': '||/usr/bin/lesspipe.sh %s', 'SHELL': '/bin/bash', 'OLDPWD': '/usr/local/pycharm-community-2019.2.1/bin', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'VIRTUAL_ENV': '/home/kiosk/PycharmProjects/python/venv', 'IMSETTINGS_INTEGRATE_DESKTOP': 'yes', 'XDG_SESSION_DESKTOP': 'gnome-classic', 'LS_COLORS': 'rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:.tar=38;5;9:.tgz=38;5;9:.arc=38;5;9:.arj=38;5;9:.taz=38;5;9:.lha=38;5;9:.lz4=38;5;9:.lzh=38;5;9:.lzma=38;5;9:.tlz=38;5;9:.txz=38;5;9:.tzo=38;5;9:.t7z=38;5;9:.zip=38;5;9:.z=38;5;9:.Z=38;5;9:.dz=38;5;9:.gz=38;5;9:.lrz=38;5;9:.lz=38;5;9:.lzo=38;5;9:.xz=38;5;9:.bz2=38;5;9:.bz=38;5;9:.tbz=38;5;9:.tbz2=38;5;9:.tz=38;5;9:.deb=38;5;9:.rpm=38;5;9:.jar=38;5;9:.war=38;5;9:.ear=38;5;9:.sar=38;5;9:.rar=38;5;9:.alz=38;5;9:.ace=38;5;9:.zoo=38;5;9:.cpio=38;5;9:.7z=38;5;9:.rz=38;5;9:.cab=38;5;9:.jpg=38;5;13:.jpeg=38;5;13:.gif=38;5;13:.bmp=38;5;13:.pbm=38;5;13:.pgm=38;5;13:.ppm=38;5;13:.tga=38;5;13:.xbm=38;5;13:.xpm=38;5;13:.tif=38;5;13:.tiff=38;5;13:.png=38;5;13:.svg=38;5;13:.svgz=38;5;13:.mng=38;5;13:.pcx=38;5;13:.mov=38;5;13:.mpg=38;5;13:.mpeg=38;5;13:.m2v=38;5;13:.mkv=38;5;13:.webm=38;5;13:.ogm=38;5;13:.mp4=38;5;13:.m4v=38;5;13:.mp4v=38;5;13:.vob=38;5;13:.qt=38;5;13:.nuv=38;5;13:.wmv=38;5;13:.asf=38;5;13:.rm=38;5;13:.rmvb=38;5;13:.flc=38;5;13:.avi=38;5;13:.fli=38;5;13:.flv=38;5;13:.gl=38;5;13:.dl=38;5;13:.xcf=38;5;13:.xwd=38;5;13:.yuv=38;5;13:.cgm=38;5;13:.emf=38;5;13:.axv=38;5;13:.anx=38;5;13:.ogv=38;5;13:.ogx=38;5;13:.aac=38;5;45:.au=38;5;45:.flac=38;5;45:.mid=38;5;45:.midi=38;5;45:.mka=38;5;45:.mp3=38;5;45:.mpc=38;5;45:.ogg=38;5;45:.ra=38;5;45:.wav=38;5;45:.axa=38;5;45:.oga=38;5;45:.spx=38;5;45:*.xspf=38;5;45:', 'SHLVL': '3', 'LC_MONETARY': 'zh_CN.utf8', 'QT_IM_MODULE': 'ibus', 'HISTSIZE': '1000', 'TERM': 'xterm-256color', 'LANG': 'zh_CN.utf8', 'XDG_SESSION_ID': '1', 'DISPLAY': ':0', '_': '/usr/local/pycharm-community-2019.2.1/jbr/bin/java', 'no_proxy': 'localhost,127.0.0.0/8,::1', 'GDM_LANG': 'zh_CN.utf8', 'PYTHONIOENCODING': 'UTF-8', 'DESKTOP_SESSION': 'gnome-classic', 'GPG_AGENT_INFO': '/run/user/1000/keyring/gpg:0:1', 'USER': 'kiosk', 'XDG_MENU_PREFIX': 'gnome-', 'WINDOWPATH': '1', 'VTE_VERSION': '3804', 'LC_NUMERIC': 'zh_CN.utf8', 'XDG_SEAT': 'seat0', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'PYTHONUNBUFFERED': '1', 'HOSTNAME': 'foundation71.ilt.example.com', 'GNOME_SHELL_SESSION_MODE': 'classic', 'XDG_RUNTIME_DIR': '/run/user/1000', 'XDG_VTNR': '1', 'HOME': '/home/kiosk'})
/home/kiosk/PycharmProjects/python/venv/bin:/usr/local/python3/bin:/usr/local/python3/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/kiosk/.local/bin:/home/kiosk/bin

######操作系统

import os        #模块os系统
import random    #随机数
from os.path import exists,splitext,join #系统路径查看文件是否存在,相连,分离
print(os.path.isabs('/tmp/hello')) #判断是否为绝对路径
print(os.path.isabs('hello'))      #是否右hello这个绝对路径
print(os.path.abspath('hello.png')) #输出一个绝对路径
print(os.path.join('/home/kiosk','hello.png'))#指定一个绝对路径
print(os.path.join(os.path.abspath('.'),'hello.jpg'))#另一种表现方式

#结果

True
False
/home/kiosk/PycharmProjects/python/hello.png
/home/kiosk/hello.png
/home/kiosk/PycharmProjects/python/hello.jpg

python第6天,python的遍历和第三方模块。_第4张图片

######.获取目录名或者文件名

import os        #模块os系统
import random    #随机数
from os.path import exists,splitext,join #系统路径查看文件是否存在,相连,分离
filename = '/home/kiosk/桌面/day06/hello.png'  #给一个文件路径
print(os.path.basename(filename))    #获取文件路径中的名字
print(os.path.dirname(filename))     #文件所在的文件夹名字

####创建目录/删除目录

os.mkdir('abc')
#创建递归目录
os.makedirs('img/file')
os.rmdir('abc')                     #我们删除
os.mkdir('abc')                     #再次创建。结果是只展示一次abc

python第6天,python的遍历和第三方模块。_第5张图片

#6.文件重命名

import os        #模块os系统
import random    #随机数
from os.path import exists,splitext,join #系统路径查看文件是否存在,相连,分离
print(os.system('ls'))        #查看目录下右些什么
os.rename('data1111.txt','data.txt')   #重命名
print(os.system('ls'))        #查看结果

##结果

abc
data1111.txt
img
python2.py
test.py
venv
0
abc
data.txt
img
python2.py
test.py
venv
0

python第6天,python的遍历和第三方模块。_第6张图片

print(os.path.exists('imgs')) #判断文件或目录是否存在
print(os.path.exists('data.txt'))
print(os.path.splitext('hello.jpg'))#分离后缀名和文件名
print(os.path.split('/tmp/hello/hello.jpg'))#将目录名和文件名分离

##结果

False
True
('hello', '.jpg')
('/tmp/hello', 'hello.jpg')

python第6天,python的遍历和第三方模块。_第7张图片

#两个模块

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))  #将文件的的名称与/var/log的下的目录连起来

京东二面笔试题1. 生成一个大文件ips.txt,要求1200行每行随机为172.25.254.0/24段的ip;2. 读取ips.txt文件统计这个文件中ip出现频率排前10的ip;

import random            #定义模块
def create_ip_file(filename):                   #第一个函数,生成后面的随机字符,并相连
    ip = ['172.25.254.' + str(i) for i in range(1,255)]
    # print(random.sample(ip,1))
    with open(filename,'a+') as f:               #用with方式写入文件,并相连
        for i in range(1200):
            f.write(random.sample(ip,1)[0] + '\n')create_ip_file('ips.txt')#
def sorted_by_ip(filename,count=10):           #这个函数是读却数所有的函数,选出前10个
    ips_dict = dict()                          #定义一个工厂函数
    with open(filename) as f:                  #用with方式看文件
        for ip in f:                           #ip来便利文件f
            ip = ip.strip()
            if ip in ips_dict:                  #产看文件是否在典中
                ips_dict[ip] += 1               #在加1
            else:
                ips_dict[ip] = 1                 #不再的花变成1
    sorted_ip = sorted(ips_dict.items(),key=lambda x:x[1],reverse=True)[:count]
    #这一步使用匿名函数取出字典的value值数字从达到小到大排序
    return sorted_ip  #返回值print(sorted_by_ip('ips.txt'))

python第6天,python的遍历和第三方模块。_第8张图片

练习:# 1. 在当前目录新建目录img, 里面包含100个文件, 100个文件名各不相同(X4G5.png)# 2. 将当前img目录所有以.png结尾的后缀名改为.jpg.

#各模块
import random
import string
import os
from os.path import splitextdef gen_code(len=4):
    li = random.sample(string.ascii_letters + string.digits,len)
    return ''.join(li)def create_files():
    li = [gen_code() for i in range(100)]
    os.mkdir('img')
    for i in li:
        os.mknod('img/' + i + '.png')create_files()def modify_suffix(dirname,old_suffix,new_suffix):
    #找出以png结尾的文件名,使用过滤器的方法,查找文件的末尾名称。匿名函数的方式,最后返回文件名
    pngfile = filter(lambda filename:filename.endswith(old_suffix),os.listdir(dirname))
    #分离文件名和后缀,分离的是筛选出来的
    basefiles = [os.path.splitext(filename)[0] for filename in pngfile]
    #文件重命名
    for filename in basefiles:      #文件filename在分离之后的中便利
        oldname = os.path.join(dirname,filename + old_suffix)   #将原来的文件名响亮
        newname = os.path.join(dirname,filename + new_suffix)   #将文件与新的文件后名相连
        os.rename(oldname,newname)                      #替换文件后面的后坠
        print('%s重命名为%s成功' %(oldname,newname))modify_suffix('img','.png','.jpg')

python第6天,python的遍历和第三方模块。_第9张图片

生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx

import random             #随即数模块
import string             #字符串模块
def create_mac():          #函数身成随机的字符
    MAC ='01-AF-3B'
    hex_num = string.hexdigits
    for i in range(3):
        n = random.sample(hex_num,2) ##生成两个随即的
        sn = '-'+''.join(n).upper()  #转换成大写的并且相连
        MAC += sn                   #Mac自己王后延伸
    return MAC                     #返回值
def main():       #此函数是打开一个文件将上边随即生成的,写入里面
    f = open('mac.tex','w')        #打开
    for i in range(100):           #循环100次
        mac = create_mac()         #将生成的随机给与mac这个变量
        print(mac)                 #打印出来mac
        f.write(mac + '\n')        #将mac写入f这个变量所代表的mac.tex中
main()

python第6天,python的遍历和第三方模块。_第10张图片
python第6天,python的遍历和第三方模块。_第11张图片

import os
import timetime1 = os.path.getctime('/etc/shadow')  #取得文件内容或属性最后一次被修改的文件时间
print(time1)       #打印的时间
tuple_time = time.localtime(time1)  #将其转换位我们能看的时间
print(tuple_time)
##结果
1564784111.706422
time.struct_time(tm_year=2019, tm_mon=8, tm_mday=3, tm_hour=6, tm_min=15, tm_sec=11, tm_wday=5, tm_yday=215, tm_isdst=0)

###时间之间的转换

import os
import time
#把元组时间转换为时间戳
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))        #年月天

将时间戳类型转换为字符串时间

pwd_time = os.path.getctime('/etc/passwd')  #将读取的时间戳给pwd_time
print('pwd_time',pwd_time)          #时间戳
print(time.ctime(pwd_time))         #字符串时间转换方法

将时间戳转换为元组

print(time.localtime(pwd_time)) 

##应用案例——系统监控
需求:
1.获取当前主机信息: 操作系统名, 主机名, 内核版本, 硬件架构
2.获取开机时长和开机时间
3.获取当前登录用户

import os
import psutil
from datetime import datetimeprint('主机信息'.center(50,'*'))
info = os.uname()print("""
    操作系统: %s
    主机名称: %s
    内核版本: %s
    硬件架构: %s
"""%(info.sysname,info.nodename,info.release,info.machine))print('开机信息'.center(50,'*'))
boot_time = psutil.boot_time()
#将时间戳转换为datetime类型时间
boot_time_obj = datetime.fromtimestamp(boot_time)now_time = datetime.now()delta_time = now_time - boot_time_objprint('开机时间:',boot_time_obj)
print('当前时间:',str(now_time).split('.')[0])
print('开机时长:',str(delta_time).split('.')[0])print('当前登录用户'.center(50,'*'))
login_user = psutil.users()
info = psutil.users()[0]
print(info.name)

##itchat
利用itchat模块给手机助手发信息及文件

import os
import [email protected]_register(itchat.content.TEXT,isFriendChat=True)#调用python中已有模块
def text_reply(msg):
    if msg['ToUserName'] == 'filehelper': #如果用户信息正确
        #获取要执行的命令内容
        comand = msg['Content']   #将内容给comand
        #系统执行代码
        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()

python第6天,python的遍历和第三方模块。_第12张图片

利用图灵机器人进行好友聊天

import itchat
import requestsdef get_tuling_response(info):
    print(info)
    api_url = 'http://www.tuling123.com/openapi/api' #图灵机器人的网站来源
    data = {
        'key':'38510258c5374c50809e3e15526d988d',   #设置图灵机器人后的连接的接口
        'info':_info,                                 
        'userid':'boy'                              #机器人的名字
    }
    res = requests.post(api_url,data).json()       #发送数据到指定的网址,并获取网站返回的数据
    print(res['text'])                            #打印返回的的消息
    return res['text']                             #将消息返回
get_tuling_response('你在干什么')
get_tuling_response('到处都是好玩的')
##结果
你在干什么
准备和你聊天吧
到处都是好玩的
亲爱的,当天请求次数已用完。

python第6天,python的遍历和第三方模块。_第13张图片

你可能感兴趣的:(python第6天,python的遍历和第三方模块。)