目录
一、工具pycharm和Github
pycharm这么好用的IDE,配置个github就齐活儿~
1.1 安装Git
在pycharm上配置GitHub前,需要安装Git的客户端
参考网页:https://blog.youkuaiyun.com/qq_23341529/article/details/79331519
https://blog.youkuaiyun.com/qq_35203425/article/details/78561039
1.2 在pycharm配置GitHub
pycharm中配置仓库提交,需要初始化本地文件夹为仓库,方法是:打开cmd,输入命令:git init,初始化本文件夹为仓库,(如果该文件夹下有项目了,可以把项目先移到另一个文件夹,然后用命令git init初始化原来项目文件夹为仓库,然后再将项目拷贝进来)。初始化后会发现该文件夹下多了个.git的文件夹。
参考网址:https://blog.youkuaiyun.com/qq_35203425/article/details/78561039
https://www.jianshu.com/p/231584cb735b
然后就可以使用pycharm来提交你的代码到GitHub中去了,可以commit和push。
二、Python自带的小型服务器启动
1、Python3.0版本在Windows启动命令,python -m http.server 8081
参考网址:https://blog.youkuaiyun.com/weightwwc/article/details/79406094
这样是可以利用Python搭建一个本地的服务器的。当然也可以这样启动:
#启动Python自带服务器的脚本
from http.server import CGIHTTPRequestHandler,test
test(HandlerClass = CGIHTTPRequestHandler, port = 8081)
执行该脚本就行,然后就可以在网页或者局域网内访问了:localhost:8081
2、在默认访问的路径下,会是当前服务器目录出现可以下载的文件。你可以在下面建立一个html文件,如下摘自《Python核心编程》p349
<HTML><HEAD><TITLE>
Friends CGI Demo (static screen)
</TITLE></HEAD>
<BODY><H3>Friends list for: <I>NEW USER</I></H3>
<FORM ACTION="/cgi-bin/first_cgi.py">
<B>Enter your Name:</B>
<INPUT TYPE=text NAME=person VALUE="NEW USER" SIZE=15>
<P><B>How many friends do you have?</B>
<INPUT TYPE=radio NAME=howmany VALUE="0" CHECKED> 0
<INPUT TYPE=radio NAME=howmany VALUE="10"> 10
<INPUT TYPE=radio NAME=howmany VALUE="25"> 25
<INPUT TYPE=radio NAME=howmany VALUE="50"> 50
<INPUT TYPE=radio NAME=howmany VALUE="100"> 100
<P><INPUT TYPE=submit></FORM></BODY></HTML>
然后该超文本指明了处理的CIG路径为“/cgi-bin/first_cgi.py”来处理表单的提交工作,简单的处理Python脚本如下。和书上的不一样,这里进行了改动。
# CGI处理模块
import cgi, cgitb
import codecs, sys
#防止中文乱码出现添加
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)
# 创建 FieldStorage 的实例化
form = cgi.FieldStorage()
# 获取数据
site_name = form.getvalue('person')
site_url = form.getvalue('howmany')
print ("Content-type:text/html")
print ()
print ("<html>")
print ("<head>")
print ("<meta charset=\"utf-8\">")
print ("<title>菜鸟 CGI 菜鸟 </title>")
print ("</head>")
print ("<body>")
print ("<h2>%s 菜鸟 %s</h2>" % (site_name, site_url))
print ("</body>")
print ("</html>")
这样简单处理就完成了。当然其他复杂的需要修改的目录等等,是需要修改http.server模块的server.py脚本的。例如修改cgi-bin的目录名称成cgi就涉及到修改server.py脚本。
学习地址:https://blog.youkuaiyun.com/baidu_21088863/article/details/52506949
三、pycharm自带的虚拟环境
Venv创建虚拟环境安装多版本python
除了手动创建虚拟环境外,还可以用pycharm自带的虚拟环境。在创建项目的时候使用自带的虚拟环境创建好后,CMD进入到创建好的文件下。
我这里是:D:\study\PythonStudy\compare_picture\venv\Scripts
然后再该文件夹下:敲击命令:activate就可以激活虚拟环境。
然后你就可以在该虚拟环境下安装依赖的包了,这样比较独立不会相互干扰。
参考网址:https://blog.youkuaiyun.com/SunChao3555/article/details/79163379
https://www.cnblogs.com/IDRI/p/6354237.html
四、关于模块import
1、导入模块相当于是把模块的代码全部黏贴到你现在代码的前面。
所以当你在一个模块中定义了一个print后,导入到别的代码里面肯定会打印这一行的。
2、模块命名不能以数字开头,需要转换。
3、from module import *导入所有函数和类,但是容易造成命名污染。
4、if __name__ == '__main__':可以做个判断作为程序的入口,这个代码是否作为主进程去执行的时候的判断,这个是就区分了模块还是为主进程去调用。
5、只有在sys.path中才能找到的模块,当然你可以自己添加模块的搜索路径。这些路径也有先后顺序的。
6、还可以导入包,一个包就是一个文件夹,是模块的集合,一个包至少要有一个__init__.py文件。__all__可以指定导入的包。
7、导入自己模块方法
a.如果自己写的一个python程序需要作为模块导入,则在使用的时候需要首先import sys,然后ys.path.append("c:/python"),c:/python是程序所在目录。意思就是告诉解释器除了从默认的目录中寻找之外,还需要从目录c:\python中寻找模块。这样之后就可以使用import hello(hello是自己编写的程序的名字)导入自己的模块了。
b.将库文件复制到sys.path列表中的目录里(如site-packages目录)。
五、归档和压缩
1、shutil.make_archive,归档:把多个文件或者文件夹合并到一个文件当中。
反归档shutil.unpack_archive
2、zipfile.ZipFile,压缩:用算法把多个文件或者文件夹无损或者有损合并到一个文件当中。
解压缩zipfile.extractall
# _*_ coding:utf-8 _*_
import os
import tkinter
from tkinter import filedialog
import zipfile
zzz_name = ".\\zyl.app"
yyy_name = ".\\zyl.app"
def openfiles2():
global zzz_name
zzz_name = filedialog.askopenfilename(title='打开zyl文件', filetypes=[('zyl', '*.app'), ('All Files', '*')])
print(zzz_name)
def openfilecgns():
global yyy_name
yyy_name = filedialog.askopenfilename(title='打开zyl文件', filetypes=[('zyl', '*.app'), ('All Files', '*')])
print(yyy_name)
def zip_files():
global zzz_name
global yyy_name
files = [zzz_name, yyy_name] # 文件的位置,多个文件用“,”隔开
pwd = os.path.basename(zzz_name)
zip_name = pwd.split('.', 1 )[0] + ".zip"
print(zip_name)
zip = zipfile.ZipFile( zip_name, 'w', zipfile.ZIP_DEFLATED )
for file in files:
print ('compressing', file)
zip.write( file )
zip.close()
print ('compressing finished')
GUI = tkinter.Tk() # 创建父容器GUI
GUI.title("sensor pack tool") # 父容器标题
GUI.geometry("460x380") # 设置父容器窗口初始大小,如果没有这个设置,窗口会随着组件大小的变化而变化
btn1 = tkinter.Button(GUI, text='打开zyl文件', font=("宋体", 20, 'bold'), width=30, height=1, command=openfiles2)
btn2 = tkinter.Button(GUI, text='打开zyl文件', font=('宋体', 20, 'bold'), width=30, height=1, command=openfilecgns)
btn3 = tkinter.Button(GUI, text='开始压缩', font=('宋体', 20, 'bold'), width=30, height=1, command=zip_files)
btn1.place(x=0,y=0)
btn2.place(x=0,y=50)
btn3.place(x=0,y=100)
GUI.mainloop()
六、Python调试技巧
pdb调试和pycharm调试。
https://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/index.html