1、ValueError: Incompatible indexer with Series
一般是dataframe的index有重復(fù)的情況,沒(méi)辦法直接賦值。
2、SQL語(yǔ)句:"SELECT * FROM base_events WHERE pub_time between '%s' and '%s'"%(start_time, end_time) ---- %s要加單引號(hào)
3、Object of type 'int64' is not JSON serializable
原因:實(shí)際類型是np.int64,json無(wú)法處理。
解決辦法:
````
class MyEncoder(json.JSONEncoder):
????????def default(self, obj):
????????????????if isinstance(obj, np.integer):
????????????????????????return int(obj)
? ? ? ?????????elif isinstance(obj, np.floating):
????????????????????????return float(obj)
? ? ? ?????????elif isinstance(obj, np.ndarray):
????????????????????????return obj.tolist()
? ? ? ????????else:
????????????????????return super(MyEncoder, self).default(obj)
def write_client_datafile_json(target_dir_path, file_name, postfix, ret_content):
? ????? if not os.path.exists(target_dir_path):
????????????????os.makedirs(target_dir_path)
????????with open(target_dir_path + file_name + postfix, 'w')as outfile:
????????????????json.dump(ret_content, outfile, cls=MyEncoder)
????????return
4、time.strftime("%Y-%m-%d %H:%M:%S")? --直接返回當(dāng)前時(shí)間
5、Can't convert 'bytes' object to str implicitly
roundtrip?=?by.decode('big5')
6、ImportError: cannot import name 'NUMPY_MKL'
解決方法:This problem can be easy solved by installation for?numpy+mkl?from whl file from: https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
7、SyntaxError:Non-UTF-8 code starting with '\xe8' in file
解決方法: # coding: utf-8 ——是:不是=?。。?/p>
8、KeyError: '1'
原因:dict的key不存在的時(shí)候會(huì)拋出異常
解決方法:
content = {}
content = collections.defaultdict(list, content)? ——定義content的每個(gè)key對(duì)應(yīng)的value都默認(rèn)是list類型
for line in source:
????line = line.strip()+'\t'+'__label__'+str(labels[i])
????result1.write(line+'\n')
????content[str(labels[i])].append(line)
????i +=1
9、str.startswith/endswith()里的參數(shù)只是字符串,不能用正則!!
可以用:re.search('^\d+', str)
10、pycharm替換:ctrl+R
11、一個(gè)元素都為dict的list,按照dict的某個(gè)value排序:
# 先按time排序
lst.sort(key=lambda k: (k.get('time', 0)))
# 再按照l(shuí)evel和star順序
# reverse=True表示反序排列,默認(rèn)正序排列
lst.sort(key=lambda k: (k.get('level', 0), k.get('star', 0)), reverse=True)
注意:不能用lst2 = lst.sort(...)的形式,lst2會(huì)是None!!!
list.sort()函數(shù)執(zhí)行后,原有l(wèi)ist排序直接變化!!? // 同理可得:list.extend 后,也是原有l(wèi)ist直接變化,不可用 list2 = list1.extend(list0)的形式,試圖賦給list2,list2在這里還是NoneType?
12、ValueError: Must have equal len keys and value when setting with an iterable
原因:我想把list類型賦到dataframe的一個(gè)cell中
解決辦法:
df = pd.DataFrame(np.zeros((4,4)))
?df = df.astype('object')
這樣做了以后,list類型可以存到df的某個(gè)cell,并且提出這個(gè)cell時(shí),可以迭代取其元素(而不是以str的方式存進(jìn)cell)
13、csv打開(kāi)是亂碼格式
解決辦法:用notepad++轉(zhuǎn)碼為:帶bom頭的utf-8格式
或者存儲(chǔ)時(shí)用:df_new.to_csv(file_path+file_name, encoding='utf-8-sig')
14、避免dict指針改后更改原值
解決辦法:
【法一】 ——這是錯(cuò)的!!!
from copy import deepcopy
for data_dict in pub_map:
????data_dict["data"] = gov_code_str +'/' + data_dict["data"]? ?—— 改變了pub_map本身的內(nèi)容, 后面程序還會(huì)用到pub_map時(shí)就會(huì)出錯(cuò)。比如如果外嵌了gov_code的循環(huán),則pub_map里每個(gè)元素的data_dict["datas"]變成了加循環(huán)了所有的gov_code_str.
????data_dict_list.append(deepcopy(data_dict))
【法一】——正確操作
from copy import deepcopy
for data_dict in pub_map:
? ? data_dict_new = deepcopy(data_dict)? ?// 這一步先把元素深拷貝出來(lái)
? ? data_dict_new["datas"] = gov_code_str + '/' + data_dict["datas"]? // 僅更改拷貝出來(lái)的元素
? ? data_dict_list.append(data_dict_new)
【法二】
for i in range(len(pub_map)):
? ? data_dict = {}
????data_dict["data"] = gov_code_str +'/' + pub_map[i]["data"]
????data_dict_list.append(deepcopy(data_dict))
15、關(guān)于指針 —— hin重要!??!
錯(cuò)誤一:

錯(cuò)誤二:

正確解法一:

正確解法二(更方便):

注意: int, float, bool,(string)幾個(gè)類型是值變量型(因此在循環(huán)中只生成臨時(shí)對(duì)象,不改變?cè)瓕?duì)象的值);而字典、數(shù)組等結(jié)構(gòu)變量名即是指針。ps:用id(i)查看變量地址可輔助理解。eg:



16、史上最崩潰的一次裝包!??!——pyfasttext
需要先裝cysignals,然而一直報(bào)錯(cuò),找不到指定文件?。。。海海?/p>


折騰了一兩個(gè)小時(shí)吧。最后看到virtualenv突然靈光一閃。。。尼瑪fasttext是在虛擬環(huán)境跑的?。@我在Windows下裝個(gè)毛啊啊啊啊啊?。。。。。?/p>
最后在Ubuntu下,加了sudo,成功裝了cysignals,和pyfasttext,淚目,不想說(shuō)話T0T...

路還長(zhǎng),繼續(xù)加油,都會(huì)過(guò)的T0T...
結(jié)果還是被他發(fā)現(xiàn)搞這個(gè)搞了這么久了?。?!沮喪!@!@@@?。。。?!
17、
File "fasttext/fasttext.pyx", line 146, in fasttext.fasttext.load_model
ValueError: fastText: trained model cannot be opened!
原因:訓(xùn)練模型太大,fasttext load不出來(lái)
解決辦法:傳說(shuō)用pyfasttext,我還沒(méi)試,試過(guò)后來(lái)更。。。
更崩潰的事發(fā)生了:才發(fā)現(xiàn)是我把模型路徑寫(xiě)錯(cuò)了。。。fasttext找不到所以load不了。。。。改了pyfasttext也報(bào)錯(cuò)于是才發(fā)現(xiàn)的。。。想哭T0T。。。為什么明明技術(shù)就不行!還那么粗心老是給自己找麻煩呢?。?!
18、
RuntimeError:fastexttriedtoexit:1
原因:The?fastText?source code directly calls exit() when something wrong happens (e.g.?a model file does not exist, …).
Instead of exiting,?pyfasttext?raises a Python exception (RuntimeError).//模型不存在
19、
series-objects-are-mutable-thus-they-cannot-be-hashed
原因:df_normal[df_normal[score]==0, score] = df_normal[df_normal[score]>0][score].mean()
解決辦法:df_normal.loc[df_normal[score]==0, score] = df_normal[df_normal[score]>0][score].mean()
20、url編碼問(wèn)題 _python3的編碼問(wèn)題之后詳細(xì)總結(jié)一下
url中的query帶有特殊字符(不是url的保留字)時(shí)需要進(jìn)行編碼。當(dāng)url中帶有漢字時(shí),需要特殊的處理才能正確編碼,以下都只針對(duì)這種情形,當(dāng)然也適用于純英文字符的url。
(1) url編碼:—— seems python2.x
import urllib
url ='http://test.com/s?wd=哈哈'? #如果此網(wǎng)站編碼是gbk的話,需要進(jìn)行解碼,從gbk解碼成unicode,再?gòu)腢nicode編碼編碼為utf-8格式。
url = url.decode('gbk','replace')
print urllib.quote(url.encode('utf-8','replace'))
結(jié)果: http%3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88
(2)


21、 字符編碼問(wèn)題??

22、UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f525' in position

問(wèn)題原因:出現(xiàn)在插入數(shù)據(jù)庫(kù)的時(shí)候,總是插不進(jìn)去,因?yàn)橛刑厥庾址??,編碼是——\U0001f525;pycharm系統(tǒng)環(huán)境是utf-8,可以兼容這個(gè)
字符, 但是插數(shù)據(jù)庫(kù)時(shí)(好像?)需要轉(zhuǎn)為‘gbk’, 而gbk不能識(shí)別這個(gè)字符,所以插不進(jìn)去,報(bào)錯(cuò)。
解決方法:入庫(kù)前轉(zhuǎn)一遍字符:df_temp['content'] = df_temp['content'].apply(lambda x:x.encode('gbk', 'ignore').decode('gbk')),轉(zhuǎn)為gbk的字符系統(tǒng),encode時(shí)忽略錯(cuò)誤字符就好了。不過(guò)數(shù)據(jù)庫(kù)的字符集為什么必須是gbk??難道不是utf-8嗎??明天問(wèn)一下李科。。。(一會(huì)兒行一會(huì)兒不行。。。好煩)
疑惑:后來(lái)發(fā)現(xiàn),只要把插入內(nèi)容中的單引號(hào)換成兩個(gè)單引號(hào),即使不改gbk編碼,也能插進(jìn)數(shù)據(jù)庫(kù)了= = 。。totally confused了, 難道不是編碼的問(wèn)題??
請(qǐng)教智奇后的另一種思路:入庫(kù)時(shí),是Python編譯器客戶端的編碼問(wèn)題,而不是數(shù)據(jù)庫(kù)(客戶端/服務(wù)端)的編碼問(wèn)題。
網(wǎng)上參考相關(guān)回答:
問(wèn)題是這樣的,網(wǎng)頁(yè)的數(shù)據(jù)應(yīng)該是'utf-8'編碼,這個(gè)可以在網(wǎng)頁(yè)的head上面看得到,然后你爬網(wǎng)頁(yè)的時(shí)候會(huì)把它轉(zhuǎn)化成Unicode,出問(wèn)題的是在print()這兒,對(duì)于print()這個(gè)函數(shù),他需要把內(nèi)容轉(zhuǎn)化為'gbk'編碼才能顯示出來(lái). 然后解決辦法是這樣,你在轉(zhuǎn)化后的Unicode編碼的string后面,加上 .encode('GBK','ignore').decode('GBk') 也就是先用gbk編碼,忽略掉非法字符,然后再譯碼,是不是很有道理 應(yīng)該是這樣的,因?yàn)槲液湍阌龅酵瑯拥膯?wèn)題,現(xiàn)在解決了。
對(duì)于插數(shù)據(jù)庫(kù),可在連接時(shí)設(shè)置client_encoding = 'utf-8', 就和寫(xiě)文件時(shí)需要加encoding='utf-8'一樣:
conn = psycopg2.connect(dbname=db, user=self.user, password=self.pwd, host=self.host, port=self.port, client_encoding='utf-8')
open(file, 'w', encoding='utf-8')
最終問(wèn)題想清楚了?。。。?/b>
1、插不進(jìn)數(shù)據(jù)庫(kù),不是因?yàn)榫幋a問(wèn)題,是因?yàn)橐婚_(kāi)始我并沒(méi)有替換掉微博內(nèi)容里的單引號(hào)——‘/’/'。而單引號(hào)在數(shù)據(jù)庫(kù)里是有特殊含義的,所以入庫(kù)前必須——法1)轉(zhuǎn)義:\' 并且 插入時(shí)加 E(明天再跟智奇確認(rèn)一下這個(gè)方法)? 法2)替換成兩個(gè)單引號(hào) ''(參見(jiàn)23)
2、恰好這條微博里有單引號(hào)無(wú)法插入,同時(shí)也有GBK識(shí)別不了的特殊字符,而我在入庫(kù)報(bào)錯(cuò)時(shí)要求輸出原因:

而插入報(bào)錯(cuò)的情況,一般會(huì)輸入內(nèi)容,并指示在哪里有問(wèn)題,如:

而python里的print()又習(xí)慣性(???這是另一個(gè)問(wèn)題了。。)的試圖將內(nèi)容轉(zhuǎn)為GBK再輸出,于是就報(bào)錯(cuò)了~~~(因?yàn)橛凶R(shí)別不了的特殊字符)
所以上面的疑惑也解決了,替換單引號(hào)之后,不會(huì)再報(bào)插入不了的錯(cuò),就不會(huì)要求打印錯(cuò)誤信息,也就不會(huì)出現(xiàn)gbk encode的錯(cuò)誤了。因?yàn)闊o(wú)論是python內(nèi)部環(huán)境還是數(shù)據(jù)庫(kù)的環(huán)境,都已經(jīng)設(shè)置好了utf-8的編碼格式,只要不打印,完全不會(huì)出問(wèn)題。
所以為什么,print()會(huì)習(xí)慣性地要轉(zhuǎn)為gbk呢???【話說(shuō)我也在py文件頭設(shè)置了? #coding:utf-8? 呀,哎,算了算了,保險(xiǎn)起見(jiàn),還是加上下面的sys.stdout方法吧】
其實(shí)print()函數(shù)的局限就是Python默認(rèn)編碼的局限,因?yàn)橄到y(tǒng)是win7的,python的默認(rèn)編碼不是’utf-8’,改一下python的默認(rèn)編碼成’utf-8’就:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改變標(biāo)準(zhǔn)輸出的默認(rèn)編碼
或者:sys.stdout= codecs.getwriter('utf-8')(sys.stdout)
【在cmd下運(yùn)行該腳本會(huì)有亂碼,而在IDLE下運(yùn)行卻很正常。
由此我推測(cè)是cmd不能很好地兼容utf8,而IDLE就可以,甚至在IDLE下運(yùn)行,連“改變標(biāo)準(zhǔn)輸出的默認(rèn)編碼”都不用,因?yàn)樗J(rèn)就是utf8。如果一定要在cmd下運(yùn)行,那就改一下編碼,比如我換成“gb18030”,就能正常顯示了:
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改變標(biāo)準(zhǔn)輸出的默認(rèn)編碼】
22.5、補(bǔ)充編碼問(wèn)題【我覺(jué)得我已經(jīng)掉進(jìn)編碼的坑里出不來(lái)了……
Python涉及到編碼的地方
py源代碼的編碼
你寫(xiě)源代碼時(shí)使用的編碼是什么,比如中文windows記事本默認(rèn)的gbk2312的
編輯器使用哪種編碼顯示源代碼的
比如用詞本寫(xiě)源代碼再用pycharm打開(kāi)源代碼可能就會(huì)亂碼,因?yàn)閜ycharm默認(rèn)是用utf-8顯示的
運(yùn)行界面顯示文本的編碼(重要)
這個(gè)編碼搞不清楚就問(wèn)題大啦,就會(huì)報(bào)各種錯(cuò)誤,大家肯定遇到過(guò)一個(gè)腳本在pycharm下運(yùn)行正常,但到cmd下運(yùn)行就出問(wèn)題的情況吧。
pycharm的運(yùn)行環(huán)境編碼為utf-8
cmd的運(yùn)行環(huán)境編碼為gbk,
cmd下可以使用chcp命令查看活動(dòng)頁(yè)的編碼,簡(jiǎn)體中文系統(tǒng)中顯示為936
936 GBK(一般情況下為默認(rèn)編碼)
437 美國(guó)英語(yǔ)?
65001 utf-8
當(dāng)使用print向運(yùn)行界面打印信息時(shí),是把這個(gè)字符串用默認(rèn)編碼轉(zhuǎn)化成對(duì)應(yīng)的的字節(jié)給運(yùn)行界面顯示的,如果你給的字符串編碼是unicode的那么系統(tǒng)會(huì)自動(dòng)根據(jù)環(huán)境轉(zhuǎn)成對(duì)應(yīng)的gbk或utf8去顯示但是如果你給的是utf-8然后丟給cmd顯示cmd默認(rèn)是界面gbk的編碼字符,這個(gè)時(shí)候print就會(huì)報(bào)錯(cuò)啦
print(sys.stdout.encoding) ——可以查看環(huán)境編碼
23、Execute Failed Reason: execute postgresql crash: 錯(cuò)誤: 語(yǔ)法錯(cuò)誤 在 "','" 或附近的
LINE 1: ...發(fā)生一起事故,在一家造紙廠內(nèi),4人落入沼氣池!'? ','[]','ne...
問(wèn)題原因:數(shù)據(jù)庫(kù)把單引號(hào)‘認(rèn)作特殊字符。所以要先轉(zhuǎn)一下,用兩個(gè)單引號(hào)就好啦
解決辦法:df_temp['content'] = df_temp['content'].apply(lambda x:re.compile(r"['’‘]").sub("''", x)) ——神奇的是,只改這個(gè)也能解決22的報(bào)錯(cuò)?。。∩衿妫。?!
更多編碼問(wèn)題參考:http://outofmemory.cn/code-snippet/1587/python-zhongwen-charaeter-coding-decode-encode-yiji-luanma-resolve-summary
24、TypeError: expected string or bytes-like object
正則參數(shù),不是字符串,改成字符串就行了!
這個(gè)錯(cuò)誤我是發(fā)生在以下代碼:
re.findall(pattern, data)
這個(gè)時(shí)候如何data的數(shù)據(jù)類型為bytes,時(shí),就會(huì)包這個(gè)錯(cuò)誤,因?yàn)樗枰氖亲址?/p>
所以我們要在使用re.findall()方法之前,先把data類型轉(zhuǎn)為字符串str類型。方法:
re.findall(pattern,data.decode('utf-8'))? ?// 我直接簡(jiǎn)單粗暴 re.findall(pattern, str(data)) 也OK了。。
其中decode和encode方法轉(zhuǎn)換流程:
? ? ? decode? ? ? ? ? ? ? encode
bytes ------> str(unicode)------>bytes
25、print 不會(huì)立即打出
然而奇怪的是print并不會(huì)立即打印,而是在執(zhí)行完畢整個(gè)方法后才輸出,冥思苦相半天終于從生銹的腦袋里想起“緩沖區(qū)”這個(gè)概念,查證資料后得到解決辦法,供各位小伙伴參考
使用flush() 方法?
import sys?
print(xxxx)?
sys.stdout.flush()
python 3.x版本可以設(shè)定flush參數(shù)?
print(xxx,flush=True)
以上
26、locals() 命名后報(bào)NameError --?NameError: name 'events_head_ids' is not defined
問(wèn)題:locals() 賦值和 直接賦值 方式不同 參考網(wǎng)址:https://segmentfault.com/a/1190000012724861




27、psycopg2.OperationalError: could not receive data from server: Software caused connection abort (0x00002745/10053) —— 這到底是什么錯(cuò)誤啊魂淡?。?! 一會(huì)兒出現(xiàn)一會(huì)兒消失, 鬼扯的多進(jìn)程@
解決辦法: 在外面加循環(huán),try..except 十次+
28、多進(jìn)程處理全局變量的問(wèn)題 —— 只是知道了問(wèn)題,但不知道為什么,今天晚一點(diǎn)弄懂記錄一下,問(wèn)鄭哥~
原因:多進(jìn)程沒(méi)法共享變量,所以全局變量在多進(jìn)程里起不了作用。雖然在主進(jìn)程里給全局變量賦了值, 但只要進(jìn)入子進(jìn)程,就無(wú)法共享全局變量了。所以要共享變量,必須將變量傳入子進(jìn)程的函數(shù)。
29、Python多進(jìn)程有一個(gè)巨大的坑?。?!就是程序有錯(cuò)不會(huì)爆出來(lái),只會(huì)跳過(guò)執(zhí)行下一個(gè)!??!~~~
30、本地代碼運(yùn)行沒(méi)問(wèn)題,但服務(wù)器會(huì)報(bào)錯(cuò)——這個(gè)時(shí)候多半是Python或所帶的包版本不一致,將服務(wù)器上包的版本和Windows統(tǒng)一一下就好。
31、TypeError: Object of type 'Timestamp' is not JSON serializable
原因:json沒(méi)辦法序列化timestamp格式
解決辦法:df_warning_trace_info['do_time'] = df_warning_trace_info['do_time'].dt.strftime('%Y-%m-%d %H:%M:%S') ——??converting a pandas Series use?pd.Series.dt.strftime()
32、用contab命令定時(shí)執(zhí)行Python程序時(shí),程序本身沒(méi)問(wèn)題,但定時(shí)就是不執(zhí)行。
如:*/1 * * * * cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log
查看cron日志:【報(bào)錯(cuò)】
Aug 29 17:35:01 izwz98pmxwulw602z7dz17z CROND[1251]: (root) CMD (cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log)
Aug 29 17:35:02 izwz98pmxwulw602z7dz17z CROND[1250]: (root) MAIL (mailed 142 bytes of output but got status 0x004b#012) —— 沒(méi)能成功執(zhí)行
錯(cuò)誤原因:服務(wù)器找不到Python的環(huán)境變量
解決方法:
1、source /etc/profile && cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log
2、source /root/.bashrc && cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log 【最后用了這個(gè)】
之后研究下profile和bashrc的區(qū)別,參考:https://www.cnblogs.com/hongzg1982/articles/2101792.html
33、ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()
錯(cuò)誤原因:


正確解法:

34、在不同的工程下打開(kāi)同一個(gè)py,執(zhí)行結(jié)果可能不同。
如果是單文件,沒(méi)有依賴工程的包,則不會(huì)有問(wèn)題;但如果對(duì)工程下的包有依賴,則在哪個(gè)工程下打開(kāi),就會(huì)去那個(gè)工程下找對(duì)應(yīng)的包,而不是回py本來(lái)的路徑下找。
35、Windows 任務(wù)計(jì)劃?
1)Python腳本有依賴包的話也會(huì)有上述問(wèn)題,導(dǎo)致定時(shí)執(zhí)行不成功。

2)使用絕對(duì)路徑

36、工程下:程序所在文件夾 和 程序生成的數(shù)據(jù)所在的文件夾 最好在同一級(jí),而不是相互包含,否則運(yùn)行程序有大量代碼生成時(shí),會(huì)很卡。
37、pycharm導(dǎo)入import 模塊有紅線的問(wèn)題:
【其實(shí)問(wèn)題是出在,我在pycharm導(dǎo)入時(shí)把codes上一級(jí)env_complaints作為整個(gè)工程導(dǎo)入,實(shí)際上應(yīng)該只導(dǎo)入codes作為工程就沒(méi)有這個(gè)問(wèn)題了?。?!】
工程層級(jí):

1)

2)pycharm把工程路徑設(shè)置一下:
①

②

③

④

38、還是import引入問(wèn)題:
同是utils下的兩個(gè)py: parameters.py 和 path_manager.py, 不能直接import,因?yàn)閜ycharm每次會(huì)從工程根目錄下找,所以一定是 from utils import path_manager

39、Python里面bool型False的問(wèn)題:
dataframe里存入False,之后取出導(dǎo)成本地json會(huì)無(wú)法識(shí)別,導(dǎo)致生成失敗。但直接在json的dict格式里寫(xiě)入False是可以json化的,原因是dataframe和dict里的False類型不一樣:

40、注意 .py 文件之間引用的全局變量問(wèn)題!??! —— 引用某個(gè)模塊(如,base.py)時(shí),其全局變量已經(jīng)賦值完成。如果在程序運(yùn)行過(guò)程中對(duì)其全局變量有改動(dòng),則應(yīng)該在主調(diào)度py調(diào)用base.py中的某個(gè)函數(shù)中,對(duì)其相應(yīng)全局變量先賦值。
如:① 引用時(shí)即賦值的全局變量:

② 調(diào)用時(shí)才賦值的全局變量:


41、TypeError: 'cmp' is an invalid keyword argument for this function
原因:Python3 的sort函數(shù)不再支持cmp參數(shù)導(dǎo)致的錯(cuò)誤

42、字符串.strip(rm)的問(wèn)題:
這里的rm刪除序列是只要邊(開(kāi)頭或結(jié)尾)上的字符在刪除序列內(nèi),就刪除掉。
例如 :

43、dataframe里面的整型是numpy.int型:

44、OSError: Initializing from file failed
原因:一種是函數(shù)參數(shù)為路徑而非文件名稱,另一種是函數(shù)參數(shù)帶有中文。
解決:第一種情況很簡(jiǎn)單,原因就是沒(méi)有把文件名稱放到路徑的后面,把文件名稱添加到路徑后面就可以了。
第二種情況,即使路徑、文件名都完整,還是報(bào)錯(cuò)的原因是這個(gè)參數(shù)中有中文,但是Python3不是已經(jīng)支持中文了嗎?參考了錯(cuò)誤原因和pandas的源碼,發(fā)現(xiàn)調(diào)用pandas的read_csv()方法時(shí),默認(rèn)使用C engine作為parser engine,而當(dāng)文件名中含有中文的時(shí)候,用C engine在部分情況下就會(huì)出錯(cuò)。所以在調(diào)用read_csv()方法時(shí)指定engine為Python就可以解決問(wèn)題了。

試驗(yàn):
1)open

2)engine = 'python'

45、處理dataframe總是報(bào)賦值的warning:

詳細(xì)鏈接:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy


另一種報(bào)這種warning的情況:

46、爬蟲(chóng)獲取頁(yè)面數(shù)據(jù) 中文被編碼,看不懂
解決:
1)法一

2)法二:

結(jié)果:

47、問(wèn)題:讀取csv文件指定index_col/處理dataframe的過(guò)程中, 可能產(chǎn)生原有index獨(dú)立出來(lái)為列,列名為:Unnamed:0,很煩。如下圖:

解決方法:很巧妙~~~? ? ? ??df = df.loc[:, ~df.columns.str.contains('^Unnamed')]? ? ? ? ? ? ? ? ? ? # 取列名不包含Unnamed開(kāi)頭的列
48、問(wèn)題:寫(xiě)完程序右鍵發(fā)現(xiàn)只有“run Nosetests in XXX.py”,沒(méi)有“run XXX.py”
可能原因:test是特殊字符,不能用這個(gè)詞開(kāi)頭來(lái)命名函數(shù)/類,會(huì)讓程序自動(dòng)進(jìn)入Nosetests的模式
最后的解決:改名字= = ,把test改成check,就好了
49、爬蟲(chóng)取回來(lái)的數(shù)據(jù)是bytes,要轉(zhuǎn)為dict:

50、問(wèn)題:IndexError: single positional indexer is out-of-bounds
原因:對(duì)空dataframe用了:rows_count = df_weibo_new.iloc[:, 0].size? ? 來(lái)取行數(shù),意思是這個(gè)用法只在有index/columns的情況下可以用
解決辦法:rows_count = df_weibo_new.shape[0]? ? ?# 任何dataframe都可以取行數(shù)
51、df_weibo_new = df_weibo_new[df_weibo_new["content"].apply(lambda x:re.search(env_r, x)].reset_index(drop=True)
注:env_r = '污染|霧霾'? ?# 關(guān)鍵詞,或關(guān)系
這一句報(bào)錯(cuò),原因是如果字符串x沒(méi)有匹配到env_r,會(huì)返回None,而再在外層用df_weibo_new[None]會(huì)在索引中找不到None而報(bào)錯(cuò)。
解決方法:加個(gè) == True
df_weibo_new = df_weibo_new[df_weibo_new["content"].apply(lambda x:re.search(env_r, x) == True)].reset_index(drop=True)
52、string.format()的問(wèn)題
sqlstr ="UPDATE %s SET {} WHERE id={};"%PublicPraiseTable.BaseSample
set_cols = [colfor colin df_fenci.columns.tolist()if colnot in ["id", "content"]]# , "fenci_mark"
for index, rowin df_fenci.iterrows():
????????set_str =", ".join(["{}='{}'".format(col, row[col])for colin set_cols])
????????# 打上fenci_mark
? ? ? ? set_str +=", fenci_mark=1, fenci_update='{}'".format(datetime.now())
????????# 這樣寫(xiě)有問(wèn)題,第一次format賦值后,sqlstr就已經(jīng)是字符串了,下次format不起作用
? ? ? ? # sqlstr = sqlstr.format(set_str, row["id"])
????????# print(sqlstr, flush=True)
? ? ????public_praise_db_sample_obj.execute_any_sql(sqlstr.format(set_str, row["id"]))? ? # 應(yīng)該這樣寫(xiě)
53、MemoryError:
file_bytes = f.read()
MemoryError
https://blog.csdn.net/weixin_39750084/article/details/81501395
54、Linux系統(tǒng),服務(wù)器上安裝pyfasttext報(bào)gcc的錯(cuò)誤:command 'gcc' failed with exit status 1
嘗試研究:在阿里云服務(wù)器、本機(jī)的Linux系統(tǒng)下都能成功安裝pyfasttext,但在118的服務(wù)器上就不行。
用gcc --version查看版本是4.4.7,懷疑是該版本不支持C++11,而pyfasttext明確要求C++11:

也嘗試過(guò)一些網(wǎng)上通用的解決方案,如:https://blog.csdn.net/enweitech/article/details/80728434,均不能解決

鎖定問(wèn)題,是centOS下的gcc版本無(wú)法升級(jí)至支持C++11的原因:

最終解決辦法:http://www.cnblogs.com/highway-9/p/5628852.html
總結(jié):1)查看Linux系統(tǒng):cat /proc/version

2)查看Linux系統(tǒng)版本命令:lsb_release -a

55、Linux客戶端中文亂碼問(wèn)題:在客戶端修改即可?。?!


先這么改,不要一早去改內(nèi)置文件(./etc/.bashrc)?。?!
56、plt報(bào)錯(cuò):plt.text(.99, .01, ('vec_col=%s, k=%d, score=%.2f' % ("A", 1, 3.33)),tranform=plt.gca().transAxes,
? ? ? ? size=10, horizontalalignment='right')
raise AttributeError('Unknown property %s' % k)
AttributeError: Unknown property tranform
代碼塊兒:

報(bào)錯(cuò)信息:

57、Windows計(jì)劃任務(wù)程序——查看歷史記錄總是報(bào)錯(cuò),啟動(dòng) Windows Event Log 報(bào)錯(cuò)4021,解決辦法:
找到“C:\Windows\System32\LogFiles\WMI”下的文件夾“RtBackup”,右擊——“安全”,你就會(huì)看到在“組和用戶名”的那個(gè)框里可能會(huì)沒(méi)有SYSTEM這個(gè)用戶,這個(gè)時(shí)候你點(diǎn)編輯----添加,在方框中鍵入SYSTEM,再點(diǎn)確定就可以了。同時(shí)對(duì)于SYSTEM這個(gè)用戶,你把他的權(quán)限中的完全控制給選上,確定退出后,重啟一下。
58、Python 讀取數(shù)據(jù) 內(nèi)存問(wèn)題:https://blog.csdn.net/youzhouliu/article/details/83745445
59、幾個(gè)Linux下操作的問(wèn)題:
1)多版本Python,怎么運(yùn)行指定版本的Python?
- 改Python指向: ln 目標(biāo)路徑的python /usr/bin/python
如遇file exists的錯(cuò),先 mv /usr/bin/python /usr/bin/python-old
注:mv命令需要權(quán)限
- 直接帶路徑執(zhí)行:/opt/anaconda3/bin/python? XXX.py
2)服務(wù)器jieba報(bào)錯(cuò):

是因?yàn)閖ieba加載模型時(shí),需要在指定路徑下建立temp文件
解決:sudo??/opt/anaconda3/bin/python? XXX.py
60、數(shù)據(jù)存儲(chǔ)方面:注:csv文件(一張表)最多寫(xiě)1048576行,多的會(huì)被截掉!??! —— 錯(cuò),csv行數(shù)無(wú)限制,只是用excel/WPS打開(kāi)只顯示1048576行,后實(shí)測(cè),用notepad++打開(kāi)有255百萬(wàn)行。

百萬(wàn)量級(jí)文本數(shù)據(jù)導(dǎo)至本地,最好用.txt,大小只和磁盤(pán)內(nèi)存有關(guān),打開(kāi)比同量級(jí)json快、穩(wěn)定
CSV作為大量級(jí)文本數(shù)據(jù)存儲(chǔ)真是無(wú)比難用?。?!bug眾多?。?!對(duì)不齊,編碼,格式亂掉?。?!你妹啊?。。。。。?!
用json/txt?。。。。。?!
61、大量級(jí)文本樣本數(shù)據(jù)存儲(chǔ):HDF5,lmdb,txt(多分文件),分布式文件系統(tǒng)
62、csv導(dǎo)出亂碼問(wèn)題:逗號(hào)導(dǎo)致分隔出錯(cuò),0開(kāi)頭的字符串被抹去 及解決方法

https://blog.csdn.net/conanju_pc/article/details/50535744

63、winscp 主機(jī)通信連接斷掉——也有可能是內(nèi)存占滿,連不上,掉線

64、服務(wù)器上路徑配置問(wèn)題,如果code和引用的包不在統(tǒng)一層級(jí),且報(bào)錯(cuò)說(shuō)找不到包的話,需要把工程路徑加到sys.path里面:
import os
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) +"/"
print(PROJECT_DIR)
import sys
sys.path.append(PROJECT_DIR)
65、Python dir() 函數(shù)
描述
dir()?函數(shù)不帶參數(shù)時(shí),返回當(dāng)前范圍內(nèi)的變量、方法和定義的類型列表;帶參數(shù)時(shí),返回參數(shù)的屬性、方法列表。如果參數(shù)包含方法__dir__(),該方法將被調(diào)用。如果參數(shù)不包含__dir__(),該方法將最大限度地收集參數(shù)信息。
66、Linux(centOS 7.6系統(tǒng))下升級(jí)svn(從1.6到1.11)
報(bào)錯(cuò):
--> 正在處理依賴關(guān)系 libsasl2.so.2()(64bit),它被軟件包 subversion-1.11.0-1.x86_64 需要
--> 解決依賴關(guān)系完成
錯(cuò)誤:軟件包:subversion-1.11.0-1.x86_64 (WandiscoSVN)
? ? ? ? ? 需要:libsasl2.so.2()(64bit)
您可以嘗試添加 --skip-broken 選項(xiàng)來(lái)解決該問(wèn)題
您可以嘗試執(zhí)行:rpm -Va --nofiles --nodigest

智障啊真是?。。?!新版本路徑配錯(cuò)?。?!本機(jī)是centOS 7.6,配的升級(jí)路徑是:baseurl=http://opensource.wandisco.com/centos/6/svn-1.11/RPMS/$basearch/
然后一直報(bào)依賴包錯(cuò)誤啊?。?!還去yum update了所有包?。。。?!
你妹!?。∪钡氖莄entOS 6.0下的包,怎么可能在centOS 7.6環(huán)境下裝的上?。。。?/p>
照搬網(wǎng)上答案真的會(huì)把自己坑死?。?!
最后解決:
baseurl=http://opensource.wandisco.com/centos/7/svn-1.11/RPMS/$basearch/
或者(估計(jì)也有效):
baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.8/RPMS/$basearch/
配置文件:

升級(jí)結(jié)果:

意外收獲:
Linux下缺的依賴包下載地址:
https://pkgs.org/download/libsasl2.so.2()(64bit)
安裝.so依賴包,如libsasl2.so.2()(64bit) —— 對(duì)應(yīng)上述網(wǎng)址中下載的包名:cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm
rpm -ivh cyrus-sasl-lib-2.1.23-15.el6_6.2.x86_64.rpm? / yum install ...
Linux從HTML下載包:
wget +url
Linux下查看系統(tǒng)版本:
lsb_release -a
升級(jí)初衷:
也是報(bào)錯(cuò)……
報(bào)svn subversion版本和客戶端對(duì)不上的錯(cuò),原因大概是我在windows下用了tortoriseSVN 是 1.11版本的,而Linux下的svn是1.6版本的,需要升級(jí)。
######
媽的!搞半天!原來(lái)247(產(chǎn)品正式服務(wù)器)本來(lái)就沒(méi)有升級(jí)svn,因?yàn)椋?/b>
一是外網(wǎng)服務(wù)器(云服務(wù)器)訪問(wèn)不了內(nèi)網(wǎng)網(wǎng)址(svn代碼管理服務(wù)器)!??!
二是同步到對(duì)外發(fā)布(正式產(chǎn)品)服務(wù)器上的代碼,必須手動(dòng)確認(rèn),不能本地svn更新就直接拖!?。∥kU(xiǎn)?。?!影響產(chǎn)品!??!
都是坑,西湖的水,我的淚~~~~
67、服務(wù)器內(nèi)外網(wǎng)
讓我們念三遍:
外網(wǎng)(云服務(wù)器)是找不到內(nèi)網(wǎng)(如內(nèi)網(wǎng)管理svn的服務(wù)器)的機(jī)器的
外網(wǎng)(云服務(wù)器)是找不到內(nèi)網(wǎng)(如內(nèi)網(wǎng)管理svn的服務(wù)器)的機(jī)器的
外網(wǎng)(云服務(wù)器)是找不到內(nèi)網(wǎng)(如內(nèi)網(wǎng)管理svn的服務(wù)器)的機(jī)器的
內(nèi)網(wǎng)IP一般為:
10.X.X.X、
172.16.X.X-172.31.X.X、192.168.X.X等
外網(wǎng)IP一般為:其他,如120.78.……
68、環(huán)境變量問(wèn)題:Python不是內(nèi)部或外部命令
1)右鍵Python 查看安裝路徑
2)計(jì)算機(jī)-屬性-高級(jí)系統(tǒng)設(shè)置-環(huán)境變量-path-加上:
C:\python27;C:\python27\Scripts
注意:不能省掉后一個(gè)?。?!
69、elasticsearch readtime out

用scroll_id翻頁(yè)時(shí),遇到read timeout 可能會(huì)取不全(某幾頁(yè)就取不到),但如果不用翻頁(yè),要么程序輪詢完節(jié)點(diǎn),都timeout 于是報(bào)錯(cuò)退出,要么就能取全。
70、ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory
原因:TensorFlow的版本和cuda版本不一致,需要cuda-10.0的版本
解決:
1)在linux系統(tǒng)普通用戶目錄(cd /home/xxx)下的.bashrc文件中,加上cuda-10.0的路徑:
export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64/
2)執(zhí)行source ~.bashrc激活配置
3)再次執(zhí)行程序,問(wèn)題得到解決~
附注:
1)TensorFlow和cuda版本對(duì)應(yīng):https://tensorflow.google.cn/install/source

2)查看cuda和cudnn版本:https://blog.csdn.net/Teeyohuang/article/details/79082003
cuda一般安裝在 /usr/local/cuda/ 或 /usr/local/cuda-10.0/? 路徑下,該路徑下有一個(gè)version.txt文檔,里面記錄了cuda的版本信息
cat ?/usr/local/cuda/version.txt 即可查詢
同理,cudnn的信息在其頭文件里
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 ?即可查詢
3)修改.bashrc文件:https://blog.csdn.net/eleanoryss/article/details/70207767

71、Beyond Compare 4 提示錯(cuò)誤“授權(quán)密鑰已被吊銷”的解決辦法
錯(cuò)誤提示:
授權(quán)密鑰已被吊銷。
解決方法:
刪除以下目錄中的所有文件即可。
C:\Users\Administrator\AppData\Roaming\Scooter Software\BeyondCompare4
72、pip裝包/升級(jí)太慢 - 換國(guó)內(nèi)的源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn +包名
73、git拉取gitlab工程報(bào)錯(cuò):
拉取項(xiàng)目顯示錯(cuò)誤信息
remote: Repository not found.
fatal: repository 'http://192.168.1.13/xxx/xxx.git' not found
原因:因?yàn)橐郧笆褂眠^(guò)其他帳號(hào)配置信息都保存了,然后帳號(hào)密碼默認(rèn)用以前的導(dǎo)致拉取沒(méi)有權(quán)限
解決方法:
執(zhí)行cmd命令
? ? git clone http://username:password@192.168.1.13/xxx/xxx.git
74、elasticsearch寫(xiě)入速度(針對(duì)es.bulk操作超時(shí)報(bào)錯(cuò)的情況)優(yōu)化:https://blog.csdn.net/jiao_fuyou/article/details/78518209
具體報(bào)錯(cuò):

具體優(yōu)化操作:
① 關(guān)掉索引副本:
你的index/_settings PUT
{
? ? "number_of_replicas": 0
}

② 更改一些配置:

總結(jié):put和get操作(原理)知識(shí)匱乏,導(dǎo)致之前看人家說(shuō)可以怎么怎么優(yōu)化,卻不知道具體操作方法。。?,F(xiàn)在依然一知半解,需要回去惡補(bǔ)下
75、test(**kwargs)** 的作用則是把字典 kwargs 變成關(guān)鍵字參數(shù)傳遞。比如上面這個(gè)代碼,如果 kwargs 等于 {'a':1,'b':2,'c':3} ,那這個(gè)代碼就等價(jià)于 test(a=1,b=2,c=3) 。
76、報(bào)錯(cuò):通常每個(gè)套接字地址(協(xié)議/網(wǎng)絡(luò)地址/端口)只允許使用一次。
原因:同一個(gè)端口的進(jìn)程沒(méi)有kill掉
解決:① 打開(kāi)cmd
? ? ? ? ? ② netstat -aon|findstr +端口號(hào) 查找pid
? ? ? ? ? ③ tasklist /fi “pid eq 276”,276是你在①中查到的pid號(hào)
? ? ? ? ? ④ taskkill /pid 276 /f,殺掉276的進(jìn)程 // 或者打開(kāi)任務(wù)管理器,殺死進(jìn)程號(hào)=276的進(jìn)程
具體圖文參見(jiàn):[https://blog.csdn.net/sinat_19917631/article/details/70228718](https://blog.csdn.net/sinat_19917631/article/details/70228718)
77、寫(xiě)函數(shù)時(shí),參數(shù)(入?yún)⒑头祷兀?biāo)清類型和要求:
def judge_idx_type_with_keywords_n_cates(data_dict:dict, idx_type:str)->bool

78、progresql 備份數(shù)據(jù)庫(kù)遇到的坑relation “XXX_id_seq” does not exist
從mysql 數(shù)據(jù)庫(kù)轉(zhuǎn)用psotgresql ,練手的時(shí)候打算備份數(shù)據(jù)庫(kù),轉(zhuǎn)存sql腳本
運(yùn)行sql腳本的時(shí)候數(shù)據(jù)和結(jié)構(gòu)都刷不過(guò)來(lái),于是檢查sql腳本和報(bào)錯(cuò),一直報(bào)relation "performance_id_seq" does not exist ,查閱文檔得知:
在postgresql表中建立了自增字段,id定義為Serial 類型,當(dāng)執(zhí)行完成建表語(yǔ)句后,其字段便成:
"id" int4 NOT NULL DEFAULT nextval('performance_id_seq'::regclass)
這種形式
但是導(dǎo)出sql腳本時(shí)候直接定義成這種形式,postgresql不能識(shí)別,想必是postgresql的一個(gè)小bug吧,因此自增的id,在建表的時(shí)候應(yīng)該定義為:
“id”? serial