• Python趣味操作推荐


    今天整理知识点,发现又多了几个有趣的操作,其中一些还比较实用,因此更新一篇博客~

    1. cowsay

    1. import cowsay
    2. print(cowsay.trex('鸡'))

    1. cowsay.daemon('美')
    2. '''
    3. 除此之外还有很多
    4. beavis, cheese, daemon, cow, dragon, ghostbusters, kitty, meow, milk, pig,
    5. stegosaurus, stimpy, trex, turkey, turtle, tux。
    6. '''

    2. 内置游戏

    pip install freegames
    1. import os
    2. # 查看所有游戏名称
    3. os.system('python -m freegames list')
    4. # 运行指定游戏
    5. os.system('python -m freegames.snake')

    有很多游戏可以玩,基本上只要操作上下左右或者空格键就可以了

     

    3. 文本转语音

    1. import pyttsx3
    2. engine = pyttsx3.init()
    3. engine.say('You are so handsome!')
    4. engine.runAndWait()

    这样我们就能听见来自电脑的夸奖了。

    3. \r妙用

    1. import time
    2. total = 132 # 可以用os获取文件大小
    3. for i in range(1, 101):
    4. time.sleep(0.3)
    5. print(f'\r共{total}MB,已下载{i}MB,{int(i / total * 100)}%。', end='')

    4. faker

    生成随机伪信息。 

    1. import random
    2. from openpyxl import workbook
    3. from faker import Faker
    4. wb = workbook.Workbook()
    5. sheet = wb.worksheets[0]
    6. sheet.title = 'pd练习'
    7. li = ['序号', '姓名', '年龄', '性别', '健康程度', '国家']
    8. di = {'中国': 'zh_CN', '美国': 'en_US', '法国': 'fr_FR', '日本': 'ja_JP'}
    9. with open('new_message.xlsx', mode='w', encoding='utf-8') as f:
    10. for num, item in enumerate(li, 1):
    11. sheet.cell(1, num).value = item
    12. for num, i in enumerate(range(2, 502), 1):
    13. country = random.choice(['中国', '美国', '法国', '日本'])
    14. gender = random.choice(['男', '女'])
    15. fk = Faker(locale=di[country])
    16. sheet.cell(i, 1).value = num
    17. sheet.cell(i, 2).value = fk.name_male() if gender == '男' else fk.name_female()
    18. sheet.cell(i, 3).value = random.randint(14, 66)
    19. sheet.cell(i, 4).value = gender
    20. sheet.cell(i, 5).value = round(random.random(), 2)
    21. sheet.cell(i, 6).value = country
    22. wb.save('new_message.xlsx')

    此外faker还有很多很多可以生成的东西,感兴趣的朋友可以去自行查找。

    5. 日历

    1. import calendar
    2. year =int(input("请输入年份:"))
    3. month = int(input("请输入月份:"))
    4. print(calendar.month(year,month))

    6. 词云生成

    想不要通过一个文本一张图片得到这样的图片:

    当时我看见第一张图片十分眼熟,但总是想不起在哪见过......

    不过觉得还是比较有意思,特和大家分享一下!

     

    词云生成方式1: 

    在开始前我们需要准备一个文本,用于生成图片中的单词。

    1. 安装词云库 stylecloud 

    这个库是一位大数据数据分析者Max Woolf做的,基于wordcloud,算是优化改良版。操作简单,直接调用。  

    pip insall stylecloud 

    2.  导入stylecloud;

         使用stylecloud.gen_stylecloud()结合自己的文本文件和想要生成的 icon图标(点我) 生成图片。

         注:上面这个地址连接我默认调成了5.0版本,新版本6.0的icon还无法识别。 

    1. import stylecloud
    2. stylecloud.gen_stylecloud(file_path='./data/text.txt',icon_name="fas fa-dragon",output_name='dragon.png')

    其中,stylecloud参数如下

    1. def gen_stylecloud(text=None,
    2. file_path=None, # 文本文件路径
    3. size=512, # 大小(长宽)
    4. icon_name='fas fa-flag', # icon样式
    5. palette='cartocolors.qualitative.Bold_5',
    6. # 调色板。[default: cartocolors.qualitative.Bold_6]
    7. colors=None,
    8. background_color="white", # 背景颜色
    9. max_font_size=200, # stylecloud 中的最大字号
    10. max_words=2000, # stylecloud 可包含的最大单词数
    11. stopwords=True, # 布尔值,筛除常见禁用词.
    12. custom_stopwords=STOPWORDS,
    13. icon_dir='.temp',
    14. output_name='stylecloud.png', # stylecloud 的输出文本名
    15. gradient=None, # 梯度方向
    16. font_path=os.path.join(STATIC_PATH, 'Staatliches-Regular.ttf'), # 字体
    17. random_state=None, # 单词和颜色的随机状态
    18. collocations=True,
    19. invert_mask=False,
    20. pro_icon_path=None,
    21. pro_css_path=None):

    比如我们加入几个参数,改变词的颜色和背景:

    1. stylecloud.gen_stylecloud(file_path='./data/text.txt',icon_name="fas fa-dragon",colors='red',
    2. background_color='black',
    3. output_name='dragon.png')

    1. stylecloud.gen_stylecloud(file_path='./data/text.txt',
    2. icon_name='fas fa-fighter-jet',
    3. palette='cartocolors.qualitative.Pastel_3',
    4. background_color='black',
    5. output_name='jet.png',
    6. collocations=False,
    7. custom_stopwords=['kind']
    8. )

    :想要显示中文的话需要提前去百度上搜索一种自己喜欢的中文字体下载下来,然后通过参数font_path导入路径。

    词云生成方法2:

    本次我们需要一个文本文件和一张白色背景图。

    pip install wordcloud 
    1. import matplotlib.pyplot as plt
    2. from wordcloud import WordCloud
    3. f = open('./data/text.txt','r',encoding='utf-8').read()
    4. '''
    5. width、height、margin可以设置图片属性
    6. generate 对文本进行自动分词,但对中文支持不好
    7. 可以设置font_path参数来设置字体集
    8. background_color 背景颜色,默认颜色为黑色.
    9. '''
    10. wordcloud = WordCloud(background_color="white",width=1000, height=860, margin=2).generate(f)
    11. plt.imshow(wordcloud)
    12. plt.axis("off")
    13. plt.show()
    14. wordcloud.to_file('./data/xx.jpg')# 保存图片

    进阶操作:

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. from os import path
    4. from PIL import Image
    5. from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
    6. text = open('./data/text.txt','r',encoding='utf-8').read()
    7. img = np.array(Image.open('./data/xxpp.jpg'))
    8. # 禁用词
    9. stopwords = set(STOPWORDS)
    10. stopwords.add("xx")
    11. # 通过 mask 参数设置词云形状
    12. wc = WordCloud(background_color="white", max_words=2000, mask=img,
    13. stopwords=stopwords, max_font_size=40, random_state=42)
    14. wc.generate(text)
    15. image_colors = ImageColorGenerator(img)
    16. plt.figure(figsize = (16,9))
    17. plt.subplot(131)
    18. plt.imshow(wc, interpolation="bilinear")
    19. plt.axis("off")
    20. plt.subplot(132)
    21. plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
    22. plt.axis("off")
    23. plt.subplot(133)
    24. plt.imshow(img, cmap=plt.cm.gray, interpolation="bilinear")
    25. plt.axis("off")
    26. plt.show()

    当然也可以加入参数进行描边:

    1. from wordcloud import WordCloud, ImageColorGenerator
    2. from PIL import Image
    3. import matplotlib.pyplot as plt
    4. import numpy as np
    5. # create a mask based on the image we wish to include
    6. my_mask = np.array(Image.open('./data/ccc01.jpg'))
    7. # create a wordcloud
    8. wc = WordCloud(background_color='white',
    9. mask=my_mask,
    10. collocations=False,
    11. width=500,
    12. height=400,
    13. contour_width=1,
    14. contour_color='black')
    15. with open('./data/text.txt',encoding='utf-8') as txt_file:
    16. texto = txt_file.read()
    17. wc.generate(texto)
    18. image_colors = ImageColorGenerator(my_mask)
    19. wc.recolor(color_func=image_colors)
    20. plt.figure(figsize=(20, 10))
    21. plt.imshow(wc, interpolation='bilinear')
    22. plt.axis('off')
    23. wc.to_file('wordcloud01.png')
    24. plt.show()

  • 相关阅读:
    springweb+vue前后端分离开发,集成部署
    读取W25Q64的设备ID时输出0xff
    IPSEC VXN 及 NAT BYPASS配置及详解
    leetcode:22. 括号生成
    聊天机器人
    Redis从入门到精通
    【Java】面向对象:继承、组合和多态
    tomcat 搭建博客 及破解数据库密码
    [论文分享] EnBinDiff: Identifying Data-Only Patches for Binaries
    无人驾驶(移动机器人)路径规划之RRT与RRTStar算法及其matlab实现
  • 原文地址:https://blog.csdn.net/suic009/article/details/126113654