python笔记4--python常见功能函数和问题
不知不觉用python好久了,期间也遇见了形形色色的问题,平时这里一份文档那里一份笔记,要用的时候总会发现有些文档一时半会找不到,索性把曾经遇见的和以后遇见的都陆续归个档吧,以便于有需要的人和自己查看!
1、配置安装板块
1.1)使用清华源安装库
pip install PackageName -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install --upgrade pip 升级pip版本
pip list 查看已经安装的包
pip install --user --upgrade scikit-learn==0.20.2 升级scikit-learn到指定的版本
1.2)Ubuntu升级pip后出现如下错误:cannot import name 'main'
解决方法:gedit /usr/bin/pip3 如果为Python2.7.x就直接/usr/bin/pip即可
原始为:from pip import main 修改后:from pip._internal import main
1.3)Ubuntu上更改默认python版本
python3.6安装方法:
安装:
1) add-apt-repository ppa:jonathonf/python-3.6
2) apt-get update
3) apt-get install python3.6
配置只输入python3时就默认使用3.6版本:
1) update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1
2) update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2(数字越大优先级越高)
3) update-alternatives --config python3
4) python3 -V
设置pip:
1) apt-get install python3-pip # Python3
2) apt-get install python-pip # Python2
python3.6 pip错误:ModuleNotFoundError: No module named 'pip._internal'
解决方法:重新安装pip3
wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
python get-pip.py
1.4) pip install TensorFlow 常见错误
pip install tensorflow 执行后出现错误:Failed to load the native TensorFlow runtime
解决方法:
(1)pip install mkl
(2)下载并安装 Visual C ++ Redistributate 2015 x64
由于笔者安装过较多其它库,因此安装以上两个就解决了该问题,继续执行的时候出现如下错误:
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA,大致意思为这个版本的TF不能通过AVX2 FMA进行编译,因此可以通过如下方式解决:
笔者添加如下两行就解决了该问题
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
参考文献:
Failed to load the native TensorFlow runtime解决方法 https://www.jianshu.com/p/4115338fba2d
警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2、功能函数板块
2.1)时间、日期相关函数
#参考 https://blog.csdn.net/guolanjiesxu/article/details/79295500
import datetime
#获取当前日期
today_date = datetime.datetime.now().strftime('%Y-%m-%d')
print today_date
#获取当前时间
today_time = datetime.datetime.now().strftime('%H:%M:%S')
print today_time
'''
2018-02-09
10:09:26
'''
#日期字符串转datetime
date_str = '2018-2-9'
date_datetime = datetime.datetime.strptime(date_str, '%Y-%m-%d')
print date_datetime
#时间字符串转datetime,,比较有意思,默认给的日期是1900-01-01,注意不是当前日期
time_str = '10:05:00'
time_datetime = datetime.datetime.strptime(time_str, '%H:%M:%S')
print time_datetime
#日期时间字符串转datetime
full_str = '2018-2-9 10:05:00'
t_datetime = datetime.datetime.strptime(full_str, '%Y-%m-%d %H:%M:%S')
print t_datetime
'''
2018-02-09 00:00:00
1900-01-01 10:05:00
2018-02-09 10:05:00
'''
获取A-B之间的所有日期:
def GetHisWeatherFromA2B(A='2016-01-01',B='2018-05-31'):
'''
03 获取A-B之间所有日期数,格式:yyyymmdd(20180101)
'''
print('GetHisWeatherFromA2B:')
DateStart = datetime.datetime.strptime(A, '%Y-%m-%d') #<class 'datetime.datetime'>
DateEnd = datetime.datetime.strptime(B, '%Y-%m-%d')
curDate = DateStart
while(curDate<DateEnd):
curDate = curDate+datetime.timedelta(days=1)
print(curDate.strftime('%Y%m%d'))
2.2) CSV相关函数
import csv
def SaveToCSV(dataList,fileName,wrtype='a'):
with open(fileName, wrtype, newline='') as csvfile:
writer = csv.writer(csvfile)
for row in dataList:
writer.writerow(row)
def GetFromCSV(FileName):
f = open(FileName,'r')
csvlist = f.readlines()
f.close()
x = []
for i in range(len(csvlist)):
tempList = csvlist[i].replace('\"','').split(',')
x.append(tempList)
return x
2.3)json-dict互转功能
读取本地json文件,并转化为dict类型:
pathName = 'E:\\Test.json' #此处需要使用绝对路径
retDict = None
with open(pathName,'r',encoding='utf-8') as f:
tmpDict = json.load(fp=f)
retDict = tmpDict
print(retDict)
#将json字符串转为dict数据类型
objJson = '{"b1": "b1", "c1": "c1", "a1": 1, "a2": 2, "a3": 3}'
objDict = json.loads(objJson)
print(objDict)
#输出结果:
'''
{'b1': 'b1', 'c1': 'c1', 'a1': 1, 'a2': 2, 'a3': 3}
'''
将dict数据转为json并保存到文本中:
fileName='dict2json.json'
#retDict 为需要保存的dict类型数据
with open(fileName, 'w',encoding='utf-8') as f:
json.dump(retDict, f,ensure_ascii=False) #dump将dict转为json字符串并存储到对应的文件中
print('fileName',fileName)
#将dict转为json数据
objDict = {'b1':'b1','c1':'c1','a1':1,'a2':2,'a3':3}
objJson = json.dumps(objDict)
objJson1= json.dumps(objDict,sort_keys=True, indent=2)#排序并且缩进两个字符输出
print(objJson)
print(objJson1)
#输出结果如下:
'''
{"b1": "b1", "c1": "c1", "a1": 1, "a2": 2, "a3": 3}
{
"a1": 1,
"a2": 2,
"a3": 3,
"b1": "b1",
"c1": "c1"
}
'''
3、说明
以上默认测试python版本为python2.7.x或者python3.6.x