还要感谢贝勒帮我解决安装模块始终装不上的问题,我在下面写一下解决办法吧:
pip install pymysql报错如下:
安装正确如下图:
解决方法:https://blog.csdn.net/SAJIAHAN/article/details/78309561
Pip 国内源的使用
我是用的2里面的b修改好了,步骤如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
模 块
#一个python文件就是一个模块
#1、标准模块
python自带的模块就是标准模块,也就是可以直接import进来的就是标准模块
import json
import random
import datetime
import time
import os
#2、第三方模块
别人写好的模块,你安装完之后就能用
pip源
# 1、
pip install pymysql
#1、pip命令不存在的,把python安装目录下的scrips加入环境变量
python2 -m pip install xxxx
python3 -m pip install xxxx
2、手动安装
.whl
1、先从python官网上下载安装文件
2、pip install c://xxx/xxxx/xxx.whl
.tar.gz
1、先从python官网上下载安装文件
2、解压
3、在命令行里面进入到解压之后的文件夹中
4、python setup.py install
#3、自己写的python文件
常用的模块:
小知识点:
1 import os 2 # print(os.getcwd())#取当前的路径 3 # os.mkdir('作业') 4 # os.mkdir('e:\zjr123')#windows系统用\ mac用/ 5 # os.mkdir('c\a')#父目录不存在会报错 6 # os.makedirs('b\a')#父目录不存在的时候不会报错 7 8 # print(os.listdir('.'))#当前目录下有哪些东西,放路径就是获取某个目录下的所有文件 9 10 # for i in range(10): 11 # os.mkdir('e:\zjr123\test%s'%i) #在这个路径下创建从test0到test9的文件夹 12 13 # os.rmdir('stu')#删除空文件夹,非空文件夹不能删除 14 # 15 #把末尾是偶数的文件夹中创建一个a.txt文件,里面随便写点东西 16 # 1. 获取到这个目录下的所有的文件夹,os.listdir('') 17 # 2. 判断文件夹的最后一位是不是偶数 18 # 3. 如果是偶数的,在这个文件夹里f = open(a.txt) f.write('xxx') 19 20 # a=os.listdir('e:\zjr123') # os.listdir(r'e:\nhy123') 加r是为了转义,单独 是换行符 21 #获取这个文件夹里所有的文件 22 # print(a) 23 # for dir in a:#循环这些文件 24 # # print(dir[-1])#取字符串的最后一个字符 25 # if int(dir[-1])%2 == 0:#判断是否为偶数 26 # abs_path = r'e:\zjr123\%sa.txt'%dir #跨目录拼接绝对路径 27 # print(abs_path) 28 # with open(abs_path,'w',encoding='utf-8') as fw: 29 # fw.write('zjirjn') 30 31 # print(os.path.join('zjr123','test0','b.txt'))#拼接路径,它会自动识别路径分割符 32 # print(os.sep)#当前系统的路径分隔符 33 # print(os.path.dirname('e:\zjr123\test0\a.txt'))#获取父目录的路径 34 # print(os.path.getsize('e:\zjr123\test0\a.txt'))#获取文件大小的,可以用来判断空文件 35 # print(os.path.exists('e:\zjr123\test0'))#判断文件夹是否存在 True or False 36 # print(os.path.isfile('e:\zjr123\test0\a.txt'))#判断是否是文件,如果文件不存在报False 37 38 # print(os.path.split('e:\zjr123\test0\a.txt'))#分割文件路径和文件名
遍历文件夹:
#遍历我电脑本机e盘下zjr123文件夹下有哪些文件和文件夹
1 import os 2 for cur_dir,dir,files in os.walk('e:\zjr123'):#cur_dir路径下,dir表示有哪些文件夹,files表示有哪些文件 3 print('cur_dir..',cur_dir,'dirs..',dir,'files..',files)
结果:
练习:在logs文件夹里所有的文件后面加.bak
1 import os 2 for cur,dirs,files in os.walk('logs'):#平级,写相对位置 3 # print(cur,dirs,files) 4 for f in files:#android_2018-04-17.log.bak 5 new_file_name = os.path.join(cur,f+'.bak')#新名字 6 # new_file_name = new_file_name.replace('.bak','') 7 print(new_file_name) 8 old_file_name = os.path.join(cur,f)#旧名字logsandroidandroid_2018_04_12.log 9 os.rename(old_file_name,new_file_name)#用新名字替换旧名字
结果:
日期相关的
1 import time 2 #时间戳 从unix元年开始到现在过的秒数 3 #格式化好的时间 2018-07-01 4 5 print(int(time.time()))#获取当前的时间戳 6 print(time.strftime('%Y-%m-%d %H:%M:%S'))#获取当前的时间 7 print(time.strftime('%y-%m-%d %H:%M:%S'))#获取当前的时间
1 #取十天前的时间 当前时间戳-10天的总秒数 2 print(24*60*60*10) 3 print(1530620629-864000)#再上网找工具转换成格式化的时间
#时间元组,时间戳和格式化时间互转的中间物
print(time.gmtime())#把时间戳转成元组,如果不传时间戳,那么取的是标准时区的时间(东八区比标准时区大8)
print(time.localtime())#把时间戳转成元组,如果不传时间戳,那么取的是当前时区的时间
结果:
#通过时间元组求十天前的日期
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1530620629-864000)))#十天前的日期
两个很有用的函数,记下来!!!
1 #1.时间戳转格式化的时间 2 #1.首先要把时间戳转成时间元组 3 #2.再把时间元组转成格式化好的时间 4 5 6 def timestampToStr(timestamp=None,format='%Y-%m-%d %H:%M:%S'): 7 if timestamp:#如果传的话 8 time_tuple = time.localtime(timestamp) # 把时间戳转成时间元组 9 return time.strftime(format,time_tuple) 10 return time.strftime(format)#如果不传就默认当前的时间戳,格式按format来 11 res = timestampToStr(22341231201,'%Y%m%d') 12 print(res) 13 print(timestampToStr()) 14 15 # 16 # #2.格式好的时间,转时间戳 17 # 1.首先要把格式化好的时间转成时间元组 18 # 2.再把时间元组转成时间戳 19 20 def strToTimestamp(format_time=None,format='%Y%m%d%H%M%S'): 21 if format_time: 22 time_tuple = time.strptime(format_time, format) #把格式好的时间转时间元组 23 return int(time.mktime(time_tuple)) #时间元组转时间戳 24 return int(time.time())#如果不传就取当前时间戳 25 a=strToTimestamp() 26 print(a)
python内置的一些函数
print
input
int
dict
set
list
str
len
open
tuple
type
max #取最大值的
dir #看这个对象里面有哪些方法
sorted #排序
print(chr(97))#打印ascii码对应的字符
print(ord('b'))#打印字符串对应的ascii码
round(3.123,2)#保留2位小数
eval #python执行代码
exec #执行python代码
enumerate 枚举
zip
字符串格式化 %s 和 format
1 import datetime 2 #字符串格式化 %s 和 format 3 msg = '欢迎{name},今天是{today}' 4 msg = msg.format(name='zjr',today=datetime.datetime.today()) 5 print(msg) 6 7 sql='insert into {} VALUE {}'.format('adb','qq')#大括号可以为空,跟%s差不多 8 9 print(sql) 10 11 #format_map 后面传一个字典 12 d={'name':'zjr','sex':'女'} 13 words = '名字:{name},性别:{sex}'.format_map(d) 14 print(words)
关于函数的一些补充:
常量、局部变量、全局变量
1 name = 'zjr'#尽量不使用全局变量,会占内存 2 FILE_NAME='goods.json'#常量,不变动,用大写 3 4 #局部变量 5 #在函数里定义的变量都是局部变量,出了函数就不能用了 6 #全局变量 7 #在文件最上面定义的这个变量,就是全局变量 8 9 def test(): 10 global name#声明我要修改全局变量 11 name ='小白' 12 print(name) 13 test() 14 15 d = {'name':'zjr'} 16 #字典和list,这种可变变量,不需要用global来声明,就直接可以修改 17 def my(): 18 d['sex']=28 19 print(d) 20 my() 21 print(d)
23 #可变参数 默认*args,可随便取名 24 def send_mail(*email): 25 print('email..',email) 26 # print('给xxx发邮件%s'%email) 27 send_mail('zjr@qq.com') 28 send_mail('1111@qq.com','55555@qq.com') 29 send_mail() 30 #1.非必填 31 #2.没有限制参数个数 32 33 def run(name,age=21,*args): 34 print('name..',name) 35 print('age..',age) 36 print('args..',*args) 37 run('zjr',45,'bj','lala') 38 39 #返回多个值 40 def zjr(): 41 name = '小红' 42 sex = '女' 43 age = 23 44 return name,sex,age 45 a,b,c=zjr() 46 # res = zjr() #return多个值放元组 47 print(a,b,c) 48 49 def op_db(ip,port,db,passwd,sql):#多个参数,用了位置传参后不能再直接默认传参 50 pass 51 52 #关键字参数 53 def m(name,**info):#**info,放到字典中,默认**kwargs 54 print(info) 55 # m(name='hhh',sex='boy',age=21) 56 # m('khh',a='boy',b=1) 57 # m() 58 # m(type='car',a=1,b=1) 59
60 #递归,函数自己调用自己,递归最多循环999次 61 #1.用递归的话,必须有一个明确的结束条件 62 63 count = 0 64 def add(): 65 global count 66 count+=1 67 print('hhh',count) 68 add() 69 # add() 70 def my2(): 71 num = input('输入一个数字:') 72 num = int(num) 73 if num%2 != 0: 74 print('请输入偶数!') 75 return my2() 76 # my2() 77 78 # for i in range(1,34):#1到33,顾头不顾尾 79 # print(i) 80 81 import random 82 res = random.sample(range(1,34),6) 83 # print(res) 84 #列表推导式,列表生成式 85 res = [str(i).zfill(2) for i in res] 86 print(res) 87 res2 =[1,2,3,4] 88 res2 = [i+10 for i in res2] 89 print(res2)