首页 文章 精选 留言 我的

精选列表

搜索[python解释器],共10000篇文章
优秀的个人博客,低调大师

Python的shutil模块

import shutil 1.shutil.copy(source,destination) 将source的文件拷贝到destination,两个参数都是字符串格式。 2.shutil.copyfilr() 将源文件内容复制给目标文件,如果目标文件不存在则产生错误。 3.shutil.copytree(source,destination) 复制整个文件夹,从source复制到destion中,destion是不存在的文件,将source下的文件全部拷贝到destion中。 4.shutil,copy2() 和shutil.copy2()类似,但copy2拷贝过来的元数据会包含访问可修改时间。

优秀的个人博客,低调大师

python str.endswith

判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False suffix -- 该参数可以是一个字符串或者是一个元素。 start -- 字符串中的开始位置。 end -- 字符中结束位置。 endswith(...) S.endswith(suffix[, start[, end]]) -> bool Return True if S ends with the specified suffix, False otherwise. With optional start, test S beginning at that position. With optional end, stop comparing S at that position. suffix can also be a tuple of strings to try.

优秀的个人博客,低调大师

python——Django项目模板

views.py 1 # -*- coding: utf-8 -*- 2 from __future__ import unicode_literals 3 4 from django.shortcuts import render 5 from message.models import UserMessage 6 # Create your views here. 7 def getform(request): 8 if request.method == 'POST': 9 name = request.POST.get('name','') 10 email = request.POST.get('email','') 11 address = request.POST.get('address','') 12 message = request.POST.get('message','') 13 mess = UserMessage() 14 mess.name = name 15 mess.email = email 16 mess.adress = address 17 mess.message = message 18 mess.save() 19 return render(request, 'message_form.html') settings.py 1 """ 2 Django settings for DjangoTest project. 3 4 Generated by 'django-admin startproject' using Django 1.11.10. 5 6 For more information on this file, see 7 https://docs.djangoproject.com/en/1.11/topics/settings/ 8 9 For the full list of settings and their values, see 10 https://docs.djangoproject.com/en/1.11/ref/settings/ 11 """ 12 13 import os 14 15 # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 18 # STATIC_ROOT = os.path.join(BASE_DIR, 'static') 19 20 # Quick-start development settings - unsuitable for production 21 # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ 22 23 # SECURITY WARNING: keep the secret key used in production secret! 24 SECRET_KEY = '42$e_@s@&l+#_$3_d02$f*n0@uqk#-51klz)4z1t_fi2ok!ol7' 25 26 # SECURITY WARNING: don't run with debug turned on in production! 27 DEBUG = True 28 29 ALLOWED_HOSTS = [] 30 31 32 # Application definition 33 34 INSTALLED_APPS = [ 35 'django.contrib.admin', 36 'django.contrib.auth', 37 'django.contrib.contenttypes', 38 'django.contrib.sessions', 39 'django.contrib.messages', 40 'django.contrib.staticfiles', 41 'message' 42 ] 43 44 MIDDLEWARE = [ 45 'django.middleware.security.SecurityMiddleware', 46 'django.contrib.sessions.middleware.SessionMiddleware', 47 'django.middleware.common.CommonMiddleware', 48 'django.middleware.csrf.CsrfViewMiddleware', 49 'django.contrib.auth.middleware.AuthenticationMiddleware', 50 'django.contrib.messages.middleware.MessageMiddleware', 51 'django.middleware.clickjacking.XFrameOptionsMiddleware', 52 ] 53 54 ROOT_URLCONF = 'DjangoTest.urls' 55 56 TEMPLATES = [ 57 { 58 'BACKEND': 'django.template.backends.django.DjangoTemplates', 59 'DIRS': [os.path.join(BASE_DIR, 'templates')], 60 'APP_DIRS': True, 61 'OPTIONS': { 62 'context_processors': [ 63 'django.template.context_processors.debug', 64 'django.template.context_processors.request', 65 'django.contrib.auth.context_processors.auth', 66 'django.contrib.messages.context_processors.messages', 67 ], 68 }, 69 }, 70 ] 71 72 WSGI_APPLICATION = 'DjangoTest.wsgi.application' 73 74 75 # Database 76 # https://docs.djangoproject.com/en/1.11/ref/settings/#databases 77 78 DATABASES = { 79 'default': { 80 'ENGINE': 'django.db.backends.mysql', 81 'NAME': "DjangT", 82 'USER': "root", 83 'PASSWORD':"root", 84 'HOST':"127.0.0.1" 85 } 86 } 87 88 89 # Password validation 90 # https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators 91 92 AUTH_PASSWORD_VALIDATORS = [ 93 { 94 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 95 }, 96 { 97 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 98 }, 99 { 100 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 101 }, 102 { 103 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 104 }, 105 ] 106 107 108 # Internationalization 109 # https://docs.djangoproject.com/en/1.11/topics/i18n/ 110 111 LANGUAGE_CODE = 'en-us' 112 113 TIME_ZONE = 'UTC' 114 115 USE_I18N = True 116 117 USE_L10N = True 118 119 USE_TZ = True 120 121 # Static files (CSS, JavaScript, Images) 122 # https://docs.djangoproject.com/en/1.11/howto/static-files/ 123 124 STATIC_URL = '/static/' 125 STATICFILES_DIRS = [ 126 os.path.join(BASE_DIR,'static') 127 ] models.py 1 # -*- coding: utf-8 -*- 2 from __future__ import unicode_literals 3 4 from django.db import models 5 6 # Create your models here. 7 class UserMessage(models.Model): 8 name = models.CharField(max_length=20,verbose_name=u"用户名") 9 email = models.CharField(max_length=100,verbose_name=u"邮箱",default="",primary_key=True) 10 adress = models.CharField(max_length=200,verbose_name=u"联系地址") 11 message = models.CharField(max_length=500,verbose_name=u"留言信息") 12 13 class Meta: 14 verbose_name = u"用户留言信息" 15 verbose_name_plural = verbose_name urls.py 1 """DjangoTest URL Configuration 2 3 The `urlpatterns` list routes URLs to views. For more information please see: 4 https://docs.djangoproject.com/en/1.11/topics/http/urls/ 5 Examples: 6 Function views 7 1. Add an import: from my_app import views 8 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') 9 Class-based views 10 1. Add an import: from other_app.views import Home 11 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') 12 Including another URLconf 13 1. Import the include() function: from django.conf.urls import url, include 14 2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) 15 """ 16 from django.conf.urls import url 17 from django.contrib import admin 18 from message.views import getform 19 20 urlpatterns = [ 21 url(r'^admin/', admin.site.urls), 22 url(r'^form/$', getform) 23 ] message_form.html 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <link rel="stylesheet" href="/static/css/style.css"> 7 </head> 8 <body> 9 <form action="/form/" method="post" class="smart-green"> 10 <h1>留言信息 11 <span>请留下你的信息.</span> 12 </h1> 13 <label> 14 <span>姓名 :</span> 15 <input id="name" type="text" name="name" class="error" placeholder="请输入您的姓名"/> 16 <div class="error-msg"></div> 17 </label> 18 19 <label> 20 <span>邮箱 :</span> 21 <input id="email" type="email" value="" name="email" placeholder="请输入邮箱地址"/> 22 <div class="error-msg"></div> 23 </label> 24 25 <label> 26 <span>联系地址 :</span> 27 <input id="address" type="text" value="" name="address" placeholder="请输入联系地址"/> 28 <div class="error-msg"></div> 29 </label> 30 31 <label> 32 <span>留言 :</span> 33 <textarea id="message" name="message" placeholder="请输入你的建议"></textarea> 34 <div class="error-msg"></div> 35 </label> 36 <div class="success-msg"></div> 37 <label> 38 <span>&nbsp;</span> 39 <input type="submit" class="button" value="提交"/> 40 </label> 41 <input type='hidden' name='csrfmiddlewaretoken' value='SfHkbL4feo1G00sJQtbO7TtLN4c2BUwa' /> 42 {% csrf_token %} 43 </form> 44 45 </body> 46 </html> style.css 1 .smart-green { 2 margin-left: auto; 3 margin-right: auto; 4 max-width: 500px; 5 background: #F8F8F8; 6 padding: 30px 30px 20px 30px; 7 font: 12px Arial, Helvetica, sans-serif; 8 color: #666; 9 border-radius: 5px; 10 -webkit-border-radius: 5px; 11 -moz-border-radius: 5px; 12 } 13 .smart-green h1 { 14 font: 24px "Trebuchet MS", Arial, Helvetica, sans-serif; 15 padding: 20px 0px 20px 40px; 16 display: block; 17 margin: -30px -30px 10px -30px; 18 color: #FFF; 19 background: #9DC45F; 20 text-shadow: 1px 1px 1px #949494; 21 border-radius: 5px 5px 0px 0px; 22 -webkit-border-radius: 5px 5px 0px 0px; 23 -moz-border-radius: 5px 5px 0px 0px; 24 border-bottom: 1px solid #89AF4C; 25 } 26 .smart-green h1 > span { 27 display: block; 28 font-size: 11px; 29 color: #FFF; 30 } 31 32 .smart-green label { 33 margin: 0px 0px 5px; 34 display: block; 35 } 36 .smart-green label > span { 37 float: left; 38 margin-top: 10px; 39 color: #5E5E5E; 40 } 41 42 .smart-green input[type="text"], .smart-green input[type="email"], .smart-green textarea, .smart-green select { 43 color: #555; 44 height: 30px; 45 line-height: 15px; 46 width: 100%; 47 padding: 0px 0px 0px 10px; 48 margin-top: 2px; 49 border: 1px solid #E5E5E5; 50 background: #FBFBFB; 51 outline: 0; 52 -webkit-box-shadow: inset 1px 1px 2px rgba(238, 238, 238, 0.2); 53 box-shadow: inset 1px 1px 2px rgba(238, 238, 238, 0.2); 54 font: normal 14px/14px Arial, Helvetica, sans-serif; 55 } 56 57 .smart-green textarea { 58 height: 100px; 59 padding-top: 10px; 60 } 61 62 63 .smart-green .button { 64 background-color: #9DC45F; 65 border-radius: 5px; 66 -webkit-border-radius: 5px; 67 -moz-border-border-radius: 5px; 68 border: none; 69 padding: 10px 25px 10px 25px; 70 color: #FFF; 71 text-shadow: 1px 1px 1px #949494; 72 } 73 74 .smart-green .button:hover { 75 background-color: #80A24A; 76 } 77 78 .error-msg{ 79 color: red; 80 margin-top: 10px; 81 } 82 .success-msg{ 83 color: #80A24A; 84 margin-top: 10px; 85 margin-bottom: 10px; 86 } 数据库mysql,使用navicat premium工具。

优秀的个人博客,低调大师

python中的线程

1.线程的创建 1.1 通过thread类直接创建 import threading import time def foo(n): time.sleep(n) print("foo func:",n) def bar(n): time.sleep(n) print("bar func:",n) s1=time.time() #创建一个线程实例t1,foo为这个线程要运行的函数 t1=threading.Thread(target=foo,args=(3,)) t1.start() #启动线程t1 #创建一个线程实例t2,bar为这个线程要运行的函数 t2=threading.Thread(target=bar,args=(5,)) t2.start() #启动线程t2 print("ending") s2=time.time() print("cost time:",s2-s1) 在这段程序里,一个函数会先休眠几秒钟,然后再打印一句话,第二个函数也是先休眠几秒钟,然后打印一句话。 接着程序会实例化两个线程,并调用两个函数来执行,最后会打印程序问总共执行了多少时间 程序运行结果如下: ending cost time: 0.002000093460083008 foo func: 3 bar func: 5 程序会先运行父线程,打印"ending",然后打印程序执行父线程的时间,最后才会运行子线程 1.2 通过thread类来继承式创建 import threading import time # 定义MyThread类,其继承自threading.Thread这个父类 class MyThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): print("ok") time.sleep(2) print("end t1") # 对类进行实例化 t1=MyThread() # 启动线程 t1.start() print("ending") 2. Thread类的一些常用方法 2.1 join():在子线程完成之前,主线程将一直被阻塞 线程的join方法必须在子线程的start方法之后定义 在第一个例子中加入两行代码,如下: import threading import time def foo(n): time.sleep(n) print("foo func:",n) def bar(n): time.sleep(n) print("bar func:",n) s1=time.time() t1=threading.Thread(target=foo,args=(3,)) t1.start() t2=threading.Thread(target=bar,args=(5,)) t2.start() t1.join() # 阻塞t1线程 t2.join() # 阻塞t2线程 print("ending") s2=time.time() print("cost time:",s2-s1) 再次执行程序,运行结果如下: foo func: 3 bar func: 5 ending cost time: 5.002285957336426 程序运行到子线程t1中的foo方法时会睡眠3秒钟,与此同时,子线程t2也在睡眠 等到子线程t1睡眠完成后,开始打印foo函数中的print语句,然后子线程t1执行完成 2秒钟之后,子线程t2睡眠完成,开始打印bar函数中的print语句,然后子线程t2也执行完成。 而在这之前,主线程一直处于阻塞状态。等到子线程执行完成之后主线程才会执行 2.2 setDeamon(True) setDaemon方法作用是将进程声明为守护线程,必须在`start()`方法调用之前, 如果不设置为守护线程,程序会被无限挂起 在程序执行过程中,执行一个主线程,主线程又创建一个子线程时,主线程和子线程会分别运行。 当主线程运行完成时,会检验子线程是否执行完成,如果子线程执行完成,则主线程会等待子线程完成后再退出。 但是有的时候只要主线程执行完成之后,不管子线程是否执行完成,都和主线程一起退出,这个就需要调用setDeamon方法了。 拿第一个例子来说吧,现在我想让子线程t1和t2随同主线程关闭,代码如下: import threading import time def foo(n): print("foo start") time.sleep(n) print("foo end...") def bar(n): print("bar start") time.sleep(n) print("bar end...") s1 = time.time() t1 = threading.Thread(target=foo, args=(3,)) t1.setDaemon(True) t1.start() t2 = threading.Thread(target=bar, args=(5,)) t2.setDaemon(True) t2.start() print("ending") s2 = time.time() print("cost time:", s2 - s1) 程序运行结果如下 : foo start bar start ending cost time: 0.003000020980834961 可以看到,把t1和t2都声明为守护线程后,程序自上而下执行,先执行子线程t1中的foo方法,打印foo函数中的第一条打印语句,然后子线程t1进入到睡眠状态。 然后子线程t2执行,打印bar函数中的第一条print语句,然后子线程t2进入睡眠状态,程序切换到主线程运行 主线程打印完"ending"语句,发现子线程t1和t2已经被设置为守护线程,所以主线程不需要再等待两个子线程执行完成,而是立即结束,打印整个程序的执行时间。 整个程序就跟随主线程一起关闭了。 2.3 子线程的一些其他方法 isAlive() #判断一个线程是否是活动线程 getName() #返回线程的名字 setName() #设置线程的名字 import threading import time def foo(n): time.sleep(n) print("foo func:", n) def bar(n): time.sleep(n) print("bar func:", n) s1 = time.time() t1 = threading.Thread(target=foo, args=(3,)) t1.setDaemon(True) print("线程还未启动时,判断t1是否是活动的线程:", t1.isAlive()) # 线程还未启动,所以是False t1.start() # 启动线程 print("线程已启动时,判断t1是否是活动的线程:", t1.isAlive()) # 线程已启动,所以是True print("修改前的线程名为:",t1.getName()) # 获取线程名 t1.setName("t1") #设置线程名 print("修改后的线程名为:",t1.getName()) # 获取线程名 t1.join() print("线程执行完成时,判断t1是不否是活动的线程:", t1.isAlive()) # 线程已执行完成,所以是False # print(threading.activeCount()) print("ending") s2 = time.time() print("cost time:", s2 - s1) 程序执行结果: 线程还未启动时,判断t1是否是活动的线程: False 线程已启动时,判断t1是否是活动的线程: True 修改前的线程名为: Thread-1 修改后的线程名为: t1 foo func: 3 线程执行完成时,判断t1是不否是活动的线程: False ending cost time: 3.001171588897705 3.threading模块提供的一些方法 threading.currentThread() #返回当前的线程变量 threading.enumerate() #返回一个包含正在运行的线程的列表,不包括启动前和终止后的线程 threading.activeCount() #返回正在运行的线程数量,等同于len(threading.enumerate()) import threading import time def foo(n): time.sleep(n) print("foo func:", n) def bar(n): time.sleep(n) print("bar func:", n) s1 = time.time() t1 = threading.Thread(target=foo, args=(3,)) t1.setDaemon(True) t1.start() t2 = threading.Thread(target=bar, args=(5,)) t2.setDaemon(True) t2.start() print("程序中正在运行的线程数量:",threading.activeCount()) print("程序中当前的线程变量:",threading.currentThread()) print("当前正在运行的线程的列表:",threading.enumerate()) print("ending") s2 = time.time() print("cost time:", s2 - s1) 程序执行结果: 程序中正在运行的线程数量: 3 程序中当前的线程变量: <_MainThread(MainThread, started 7064)> 当前正在运行的线程的列表: [<_MainThread(MainThread, started 7064)>, <Thread(Thread-1, started daemon 6384)>, <Thread(Thread-2, started daemon 2640)>] ending cost time: 0.002000093460083008

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册