AttributeError,UnboundLocalError,飞桨Python入门,使用python的tkinter库

131 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

目录

解决 AttributeError: module 'urllib' has no attribute 'request'

UnboundLocalError: local variable ‘XXX‘ referenced before assignment

paddle 飞桨Python入门

使用python的tkinter库


飞桨Python入门

​编辑

requests.get(url=url, headers=headers) 请求网页返回的是response对象

response.text: 获取网页文本数据

response.json: 获取网页json数据

解析数据

常用解析数据方法: 正则表达式、css选择器、xpath、lxml…

常用解析模块:bs4、parsel…

""""""
import pprint
import requests
import parsel
import csv



if __name__ == '__main__':
    print(1)
    import pprint
    import requests
    import parsel
    import csv

    # csv模块保存数据到Excel
    f = open('豆瓣电影数据.csv', mode='a', encoding='utf-8', newline='')
    csv_writer = csv.DictWriter(f, fieldnames=['电影名字', '参演人员', '上映时间', '拍摄国家', '电影类型',
                                               '电影评分', '评价人数', '电影概述'])

    csv_writer.writeheader()  # 写入表头

    # 模拟浏览器发送请求
    for page in range(0, 251, 25):
        url = f'https://movie.douban.com/top250?start={page}&filter='
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
        }
        response = requests.get(url=url, headers=headers)
        # 把 response.text 文本数据转换成 selector 对象
        selector = parsel.Selector(response.text)
        # 获取所有li标签
        lis = selector.css('.grid_view li')
        # 遍历出每个li标签内容
        for li in lis:
            # 获取电影标题 hd 类属性 下面的 a 标签下面的 第一个span标签里面的文本数据 get()输出形式是 字符串获取一个  getall() 输出形式是列表获取所有
            title = li.css('.hd a span:nth-child(1)::text').get()  # get()输出形式是 字符串
            movie_list = li.css('.bd p:nth-child(1)::text').getall()  # getall() 输出形式是列表
            star = movie_list[0].strip().replace('\xa0\xa0\xa0', '').replace('/...', '')
            movie_info = movie_list[1].strip().split('\xa0/\xa0')  # ['1994', '美国', '犯罪 剧情']
            movie_time = movie_info[0]  # 电影上映时间
            movie_country = movie_info[1]  # 哪个国家的电影
            movie_type = movie_info[2]  # 什么类型的电影
            rating_num = li.css('.rating_num::text').get()  # 电影评分
            people = li.css('.star span:nth-child(4)::text').get()  # 评价人数
            summary = li.css('.inq::text').get()  # 一句话概述
            dit = {
                '名字': title,
                '参演人员': star,
                '上映时间': movie_time,
                '拍摄国家': movie_country,
                '电影类型': movie_type,
                '电影评分': rating_num,
                '评价人数': people,
                '电影概述': summary,
            }
            pprint.pprint(dit)
            csv_writer.writerow(dit)

解决 AttributeError: module 'urllib' has no attribute 'request'

解决方法:
按照上面两类原因检查代码,在Python3中加入import urllib.request就解决错误,修正代码:

import urllib
import urllib.request

UnboundLocalError: local variable ‘XXX‘ referenced before assignment

在赋值之前引用了局部变量

提前生明并且赋值,主义类型

使用python的tkinter库

​编辑

​编辑

import os


train_parameters = {
    "input_size": [1, 20, 20],                           #输入图片的shape
    "class_dim": -1,                                     #分类数
    "src_path":"./work/data/characterData.zip",       #原始数据集路径
    "target_path":"./work/data/dataset",        #要解压的路径
    "train_list_path": "./train_data.txt",              #train_data.txt路径
    "eval_list_path": "./val_data.txt",                  #eval_data.txt路径
    "label_dict":{},                                    #标签字典
    "readme_path": "/home/aistudio/data/readme.json",   #readme.json路径
    "train_batch_size": 20                             #训练的轮数
}

import matplotlib.pyplot as plt


if __name__ == '__main__':
        print()
        # 绘制图1
import tkinter
import tkinter.ttk

windows = tkinter.Tk()
windows.title("小白问题解答演示用途")
windows.geometry("500x220+200+200")
windows.configure(background="#ffffff")
windows.resizable(0,0)

def kaishi():
    for i in range(1, 10000000):
        print(i)
        windows.update() #更新窗口

#按钮
demoBtn = tkinter.Button(windows,text="kaishi",height=1,command=kaishi)
demoBtn.place(x=5,y=2)
# 长期保持
windows.mainloop()

import tkinter as tk

# 创建主窗口
window = tk.Tk()
window.title('第一个窗体')  # 标题

# 获取屏幕尺寸计算参数,使窗口显示再屏幕中央
screen_width = window.winfo_screenwidth()
screen_height = window.winfo_screenheight()
width = 650
height = 500
# window_size = '%dx%d+%d+%d' % (width, height, (screen_width-width)/2, (screen_height-height)/2)
window_size = f'{width}x{height}+{round((screen_width - width) / 2)}+{round((screen_height - height) / 2)}'  # round去掉小数
window.geometry(window_size)  # 窗口大小
# window.resizable(width=False,height=False) #设置窗体是否可用改变大小;默认可用改变
# 进入等待与处理窗口(监控每个组件,当组件发生变化或触发事件时,会立即更新窗口)
window.mainloop()