美文网首页
入坑合集

入坑合集

作者: Rainysong | 来源:发表于2018-04-20 16:36 被阅读0次

    1、ValueError: Incompatible indexer with Series

    一般是dataframe的index有重复的情况,没办法直接赋值。

    2、SQL语句:"SELECT * FROM base_events WHERE pub_time between '%s' and '%s'"%(start_time, end_time) ---- %s要加单引号

    3、Object of type 'int64' is not JSON serializable

    原因:实际类型是np.int64,json无法处理。

    解决办法:

    ````

    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")  --直接返回当前时间

    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 ——是:不是=!!!

    8、KeyError: '1'

    原因:dict的key不存在的时候会抛出异常

    解决方法:

    content = {}

    content = collections.defaultdict(list, content)  ——定义content的每个key对应的value都默认是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()里的参数只是字符串,不能用正则!!

    可以用:re.search('^\d+', str)

    10、pycharm替换:ctrl+R

    11、一个元素都为dict的list,按照dict的某个value排序:

    # 先按time排序

    lst.sort(key=lambda k: (k.get('time', 0)))

    # 再按照level和star顺序

    # reverse=True表示反序排列,默认正序排列

    lst.sort(key=lambda k: (k.get('level', 0), k.get('star', 0)), reverse=True)

    注意:不能用lst2 = lst.sort(...)的形式,lst2会是None!!!

    list.sort()函数执行后,原有list排序直接变化!!  // 同理可得:list.extend 后,也是原有list直接变化,不可用 list2 = list1.extend(list0)的形式,试图赋给list2,list2在这里还是NoneType 

    12、ValueError: Must have equal len keys and value when setting with an iterable

    原因:我想把list类型赋到dataframe的一个cell中

    解决办法:

    df = pd.DataFrame(np.zeros((4,4)))

     df = df.astype('object')

    这样做了以后,list类型可以存到df的某个cell,并且提出这个cell时,可以迭代取其元素(而不是以str的方式存进cell)

    13、csv打开是乱码格式

    解决办法:用notepad++转码为:带bom头的utf-8格式

    或者存储时用:df_new.to_csv(file_path+file_name, encoding='utf-8-sig')

    14、避免dict指针改后更改原值

    解决办法:

    【法一】 ——这是错的!!!

    from copy import deepcopy

    for data_dict in pub_map:

        data_dict["data"] = gov_code_str +'/' + data_dict["data"]   —— 改变了pub_map本身的内容, 后面程序还会用到pub_map时就会出错。比如如果外嵌了gov_code的循环,则pub_map里每个元素的data_dict["datas"]变成了加循环了所有的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)   // 这一步先把元素深拷贝出来

        data_dict_new["datas"] = gov_code_str + '/' + data_dict["datas"]  // 仅更改拷贝出来的元素

        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、关于指针 —— hin重要!!!

    错误一:

    data_dict_new在外面改变内容(指针没变), 原本加入list的data_dict_new内容也改变(因为指针没变)

    错误二:

    data_dict_new=data_dict这一步是指针赋予,于是之后更改data_dict_new指向的内容,也改变了原本pub_map里的指针指向的内容

    正确解法一:

    每次新定义一个字典(空指针)——data_dict_new={}

    正确解法二(更方便):

    深拷贝即相当于赋予新指针,但指向的内容与原指针指向的内容相同;此时更改新指针指向的内容,不会改变原指针指向的内容。

    注意: int, float, bool,(string)几个类型是值变量型(因此在循环中只生成临时对象,不改变原对象的值);而字典、数组等结构变量名即是指针。ps:用id(i)查看变量地址可辅助理解。eg:

    整型变量更改,生成临时对象,不改变原对象 临时对象i的地址是:46197872,原list各元素的地址是:46197872,46198096,46372040,。不同于临时对象。 可见data_dict不是临时生成的对象,该指针地址与原list中的各元素地址相同。

    16、史上最崩溃的一次装包!!!——pyfasttext

    需要先装cysignals,然而一直报错,找不到指定文件!!!:::

    网上pyfasttext和cysignals的安装教程太太少!!!还去查了bdist_wheel... 一直报找不到指定文件!!!完全不知道为神马!!!病急乱投医还去upgrade了setuptool和pip啊尼玛!!!

    折腾了一两个小时吧。最后看到virtualenv突然灵光一闪。。。尼玛fasttext是在虚拟环境跑的啊!@@我在Windows下装个毛啊啊啊啊啊啊!!!!!

    最后在Ubuntu下,加了sudo,成功装了cysignals,和pyfasttext,泪目,不想说话T0T...

    装的过程中内心os好多遍:我大概还是不适合这一行的吧T0T,我为何这么笨T0T,都不敢问智奇怕被鄙视啊T0T。Anyway,finally I made it!!!T0T

    路还长,继续加油,都会过的T0T...

    结果还是被他发现搞这个搞了这么久了!!!沮丧!@!@@@!!!!!

    17、

    File "fasttext/fasttext.pyx", line 146, in fasttext.fasttext.load_model

    ValueError: fastText: trained model cannot be opened!

    原因:训练模型太大,fasttext load不出来

    解决办法:传说用pyfasttext,我还没试,试过后来更。。。

    更崩溃的事发生了:才发现是我把模型路径写错了。。。fasttext找不到所以load不了。。。。改了pyfasttext也报错于是才发现的。。。想哭T0T。。。为什么明明技术就不行!还那么粗心老是给自己找麻烦呢!!!

    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编码问题 _python3的编码问题之后详细总结一下

    url中的query带有特殊字符(不是url的保留字)时需要进行编码。当url中带有汉字时,需要特殊的处理才能正确编码,以下都只针对这种情形,当然也适用于纯英文字符的url。

    (1) url编码:—— seems python2.x

    import urllib

    url ='http://test.com/s?wd=哈哈'  #如果此网站编码是gbk的话,需要进行解码,从gbk解码成unicode,再从Unicode编码编码为utf-8格式。

    url = url.decode('gbk','replace')

    print urllib.quote(url.encode('utf-8','replace'))

    结果: http%3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88

    (2)

    21、 字符编码问题??

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

    报错信息

    问题原因:出现在插入数据库的时候,总是插不进去,因为有特殊字符:🔥,编码是——\U0001f525;pycharm系统环境是utf-8,可以兼容这个

    字符, 但是插数据库时(好像?)需要转为‘gbk’, 而gbk不能识别这个字符,所以插不进去,报错。

    解决方法:入库前转一遍字符:df_temp['content'] = df_temp['content'].apply(lambda x:x.encode('gbk', 'ignore').decode('gbk')),转为gbk的字符系统,encode时忽略错误字符就好了。不过数据库的字符集为什么必须是gbk??难道不是utf-8吗??明天问一下李科。。。(一会儿行一会儿不行。。。好烦)

    疑惑:后来发现,只要把插入内容中的单引号换成两个单引号,即使不改gbk编码,也能插进数据库了= = 。。totally confused了, 难道不是编码的问题??

    请教智奇后的另一种思路:入库时,是Python编译器客户端的编码问题,而不是数据库(客户端/服务端)的编码问题。

    网上参考相关回答:

    问题是这样的,网页的数据应该是'utf-8'编码,这个可以在网页的head上面看得到,然后你爬网页的时候会把它转化成Unicode,出问题的是在print()这儿,对于print()这个函数,他需要把内容转化为'gbk'编码才能显示出来. 然后解决办法是这样,你在转化后的Unicode编码的string后面,加上 .encode('GBK','ignore').decode('GBk') 也就是先用gbk编码,忽略掉非法字符,然后再译码,是不是很有道理 应该是这样的,因为我和你遇到同样的问题,现在解决了。

    对于插数据库,可在连接时设置client_encoding = 'utf-8', 就和写文件时需要加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')

    最终问题想清楚了!!!:

    1、插不进数据库,不是因为编码问题,是因为一开始我并没有替换掉微博内容里的单引号——‘/’/'。而单引号在数据库里是有特殊含义的,所以入库前必须——法1)转义:\' 并且 插入时加 E(明天再跟智奇确认一下这个方法)  法2)替换成两个单引号 ''(参见23)

    2、恰好这条微博里有单引号无法插入,同时也有GBK识别不了的特殊字符,而我在入库报错时要求输出原因:

    执行报错

    而插入报错的情况,一般会输入内容,并指示在哪里有问题,如:

    错误信息示例

    而python里的print()又习惯性(???这是另一个问题了。。)的试图将内容转为GBK再输出,于是就报错了~~~(因为有识别不了的特殊字符)

    所以上面的疑惑也解决了,替换单引号之后,不会再报插入不了的错,就不会要求打印错误信息,也就不会出现gbk encode的错误了。因为无论是python内部环境还是数据库的环境,都已经设置好了utf-8的编码格式,只要不打印,完全不会出问题。

    所以为什么,print()会习惯性地要转为gbk呢???【话说我也在py文件头设置了  #coding:utf-8  呀,哎,算了算了,保险起见,还是加上下面的sys.stdout方法吧】

    其实print()函数的局限就是Python默认编码的局限,因为系统是win7的,python的默认编码不是’utf-8’,改一下python的默认编码成’utf-8’就:

    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码

    或者:sys.stdout= codecs.getwriter('utf-8')(sys.stdout)

    【在cmd下运行该脚本会有乱码,而在IDLE下运行却很正常。

    由此我推测是cmd不能很好地兼容utf8,而IDLE就可以,甚至在IDLE下运行,连“改变标准输出的默认编码”都不用,因为它默认就是utf8。如果一定要在cmd下运行,那就改一下编码,比如我换成“gb18030”,就能正常显示了:

    sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') #改变标准输出的默认编码】

    22.5、补充编码问题【我觉得我已经掉进编码的坑里出不来了……

    Python涉及到编码的地方

    py源代码的编码

    你写源代码时使用的编码是什么,比如中文windows记事本默认的gbk2312的

    编辑器使用哪种编码显示源代码的

    比如用词本写源代码再用pycharm打开源代码可能就会乱码,因为pycharm默认是用utf-8显示的

    运行界面显示文本的编码(重要)

    这个编码搞不清楚就问题大啦,就会报各种错误,大家肯定遇到过一个脚本在pycharm下运行正常,但到cmd下运行就出问题的情况吧。

    pycharm的运行环境编码为utf-8

    cmd的运行环境编码为gbk,

    cmd下可以使用chcp命令查看活动页的编码,简体中文系统中显示为936

    936 GBK(一般情况下为默认编码)

    437 美国英语 

    65001 utf-8

    当使用print向运行界面打印信息时,是把这个字符串用默认编码转化成对应的的字节给运行界面显示的,如果你给的字符串编码是unicode的那么系统会自动根据环境转成对应的gbk或utf8去显示但是如果你给的是utf-8然后丢给cmd显示cmd默认是界面gbk的编码字符,这个时候print就会报错啦

    print(sys.stdout.encoding) ——可以查看环境编码

    23、Execute Failed Reason: execute postgresql crash: 错误: 语法错误 在 "','" 或附近的

    LINE 1: ...发生一起事故,在一家造纸厂内,4人落入沼气池!'  ','[]','ne...

    问题原因:数据库把单引号‘认作特殊字符。所以要先转一下,用两个单引号就好啦

    解决办法:df_temp['content'] = df_temp['content'].apply(lambda x:re.compile(r"['’‘]").sub("''", x)) ——神奇的是,只改这个也能解决22的报错!!!神奇!!!

    更多编码问题参考:http://outofmemory.cn/code-snippet/1587/python-zhongwen-charaeter-coding-decode-encode-yiji-luanma-resolve-summary

    24、TypeError: expected string or bytes-like object

    正则参数,不是字符串,改成字符串就行了!

    这个错误我是发生在以下代码:

    re.findall(pattern, data)

    这个时候如何data的数据类型为bytes,时,就会包这个错误,因为它需要的是字符串。

    所以我们要在使用re.findall()方法之前,先把data类型转为字符串str类型。方法:

    re.findall(pattern,data.decode('utf-8'))   // 我直接简单粗暴 re.findall(pattern, str(data)) 也OK了。。

    其中decode和encode方法转换流程:

          decode              encode

    bytes ------> str(unicode)------>bytes

    25、print 不会立即打出

    然而奇怪的是print并不会立即打印,而是在执行完毕整个方法后才输出,冥思苦相半天终于从生锈的脑袋里想起“缓冲区”这个概念,查证资料后得到解决办法,供各位小伙伴参考

    使用flush() 方法 

    import sys 

    print(xxxx) 

    sys.stdout.flush()

    python 3.x版本可以设定flush参数 

    print(xxx,flush=True)

    以上

    26、locals() 命名后报NameError -- NameError: name 'events_head_ids' is not defined

    问题:locals() 赋值和 直接赋值 方式不同 参考网址:https://segmentfault.com/a/1190000012724861

    直接赋值 STORE_FAST locals() 解决方法:用globals()

    27、psycopg2.OperationalError: could not receive data from server: Software caused connection abort (0x00002745/10053) —— 这到底是什么错误啊魂淡!!! 一会儿出现一会儿消失, 鬼扯的多进程@

    解决办法: 在外面加循环,try..except 十次+

    28、多进程处理全局变量的问题 —— 只是知道了问题,但不知道为什么,今天晚一点弄懂记录一下,问郑哥~

    原因:多进程没法共享变量,所以全局变量在多进程里起不了作用。虽然在主进程里给全局变量赋了值, 但只要进入子进程,就无法共享全局变量了。所以要共享变量,必须将变量传入子进程的函数。

    29、Python多进程有一个巨大的坑!!!就是程序有错不会爆出来,只会跳过执行下一个!!!~~~

    30、本地代码运行没问题,但服务器会报错——这个时候多半是Python或所带的包版本不一致,将服务器上包的版本和Windows统一一下就好。

    31、TypeError: Object of type 'Timestamp' is not JSON serializable

    原因:json没办法序列化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命令定时执行Python程序时,程序本身没问题,但定时就是不执行。

    如:*/1 * * * * cd /home/liuyusheng/codes_notimer/&&python test.py >> test.log

    查看cron日志:【报错】

    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) —— 没能成功执行

    错误原因:服务器找不到Python的环境变量

    解决方法:

    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 【最后用了这个】

    之后研究下profile和bashrc的区别,参考: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()

    错误原因:

    不能用and,or连接,要用&,| 两边大小于号也不行

    正确解法:

    34、在不同的工程下打开同一个py,执行结果可能不同。

    如果是单文件,没有依赖工程的包,则不会有问题;但如果对工程下的包有依赖,则在哪个工程下打开,就会去那个工程下找对应的包,而不是回py本来的路径下找。

    35、Windows 任务计划 

    1)Python脚本有依赖包的话也会有上述问题,导致定时执行不成功。

    es_utils.py在路径D:\\liuyusheng\\liuyusheng\\codes 下,单个脚本执行计划任务时,应该把这个工程路径添加进去才能找到这个模块。这种路径添加的办法只对本程序执行过程有效,执行完了自动释放,不会添加到环境变量里。

    2)使用绝对路径

    不然会找不到文件,定时任务执行不成功。

    36、工程下:程序所在文件夹 和 程序生成的数据所在的文件夹 最好在同一级,而不是相互包含,否则运行程序有大量代码生成时,会很卡。

    37、pycharm导入import 模块有红线的问题:

    【其实问题是出在,我在pycharm导入时把codes上一级env_complaints作为整个工程导入,实际上应该只导入codes作为工程就没有这个问题了!!!】

    工程层级:

    需要引用的py文件放在utils里面

    1)

    加个点(当前路径)

    2)pycharm把工程路径设置一下:

    File - Settings

    Settings - Console - "Add source roots to PYTHONPATH"

    找到工程目录 - codes,右键 - Mark Directory as - Sources Root

    问题解决

    38、还是import引入问题:

    同是utils下的两个py: parameters.py 和 path_manager.py, 不能直接import,因为pycharm每次会从工程根目录下找,所以一定是 from utils import path_manager

    parameters.py 调用 path_manager

    39、Python里面bool型False的问题:

    dataframe里存入False,之后取出导成本地json会无法识别,导致生成失败。但直接在json的dict格式里写入False是可以json化的,原因是dataframe和dict里的False类型不一样:

    一个是nump.bool_,一个是bool

    40、注意 .py 文件之间引用的全局变量问题!!! —— 引用某个模块(如,base.py)时,其全局变量已经赋值完成。如果在程序运行过程中对其全局变量有改动,则应该在主调度py调用base.py中的某个函数中,对其相应全局变量先赋值。

    如:① 引用时即赋值的全局变量:

    不会在执行过程中改变

    ② 调用时才赋值的全局变量:

    定义 在调度函数中赋值,执行过程可能改变

    41、TypeError: 'cmp' is an invalid keyword argument for this function

    原因:Python3 的sort函数不再支持cmp参数导致的错误

    解决Python3没有cmp参数的问题

    42、字符串.strip(rm)的问题:

    这里的rm删除序列是只要边(开头或结尾)上的字符在删除序列内,就删除掉

    例如 :

    不是只删除指定子串,而是只要开头/结尾的字符在rm子串内,就删除;用split解决

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

    要用int(df.loc['aa','c'])转一下

    44、OSError: Initializing from file failed

    原因:一种是函数参数为路径而非文件名称,另一种是函数参数带有中文。

    解决:第一种情况很简单,原因就是没有把文件名称放到路径的后面,把文件名称添加到路径后面就可以了。

    第二种情况,即使路径、文件名都完整,还是报错的原因是这个参数中有中文,但是Python3不是已经支持中文了吗?参考了错误原因和pandas的源码,发现调用pandas的read_csv()方法时,默认使用C engine作为parser engine,而当文件名中含有中文的时候,用C engine在部分情况下就会出错。所以在调用read_csv()方法时指定engine为Python就可以解决问题了

    解决方法

    试验:

    1)open

    1、encoding要加到open里;2、可保证输出完整表头

    2)engine = 'python'

    丢失其他列的表头,为什么?

    45、处理dataframe总是报赋值的warning:

    终于我这强迫症也忍不了了,去研究了.loc赋值和直接赋值的区别。

    详细链接:http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy

    一个是线性运算-逐次取出,另一个是一次拿出来。 被warning的根本原因不仅仅是上述的操作时间问题,更重要的是可能引发异常——和内存有关,有缓存被清掉 / 改变原有数据的风险

    另一种报这种warning的情况:

    deepcopy可以解决

    46、爬虫获取页面数据 中文被编码,看不懂

    解决:

    1)法一

    str(string[,encoding])

    2)法二:

    取回来的原始字符用utf8解码

    结果:

    中文字符能看到了

    47、问题:读取csv文件指定index_col/处理dataframe的过程中, 可能产生原有index独立出来为列,列名为:Unnamed:0,很烦。如下图:

    Unnamed

    解决方法:很巧妙~~~        df = df.loc[:, ~df.columns.str.contains('^Unnamed')]                    # 取列名不包含Unnamed开头的列

    48、问题:写完程序右键发现只有“run Nosetests in XXX.py”,没有“run XXX.py”

    可能原因:test是特殊字符,不能用这个词开头来命名函数/类,会让程序自动进入Nosetests的模式

    最后的解决:改名字= = ,把test改成check,就好了

    49、爬虫取回来的数据是bytes,要转为dict:

    eval(str(data_bytes, encoding='utf-8'))

    50、问题:IndexError: single positional indexer is out-of-bounds

    原因:对空dataframe用了:rows_count = df_weibo_new.iloc[:, 0].size    来取行数,意思是这个用法只在有index/columns的情况下可以用

    解决办法:rows_count = df_weibo_new.shape[0]     # 任何dataframe都可以取行数

    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 = '污染|雾霾'   # 关键词,或关系

    这一句报错,原因是如果字符串x没有匹配到env_r,会返回None,而再在外层用df_weibo_new[None]会在索引中找不到None而报错。

    解决方法:加个 == 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()的问题

    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())

            # 这样写有问题,第一次format赋值后,sqlstr就已经是字符串了,下次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"]))    # 应该这样写

    53、MemoryError:

    file_bytes = f.read()

    MemoryError

    https://blog.csdn.net/weixin_39750084/article/details/81501395

    54、Linux系统,服务器上安装pyfasttext报gcc的错误:command 'gcc' failed with exit status 1

    尝试研究:在阿里云服务器、本机的Linux系统下都能成功安装pyfasttext,但在118的服务器上就不行。

    用gcc --version查看版本是4.4.7,怀疑是该版本不支持C++11,而pyfasttext明确要求C++11:

    pyfasttext要求支持C++11的gcc配置

    也尝试过一些网上通用的解决方案,如:https://blog.csdn.net/enweitech/article/details/80728434,均不能解决

    通用解决方案-不能解决

    锁定问题,是centOS下的gcc版本无法升级至支持C++11的原因

    centOS下,gcc最新版为:gcc4.4.7

    最终解决办法:http://www.cnblogs.com/highway-9/p/5628852.html

    总结:1)查看Linux系统:cat /proc/version

    内核系统

    2)查看Linux系统版本命令:lsb_release -a

    版本命令

    55、Linux客户端中文乱码问题:在客户端修改即可!!!

    连接右键-【Properties】 【Appearance】-【Character encoding】-【UTF-8】即可

    先这么改,不要一早去改内置文件(./etc/.bashrc)!!!

    56、plt报错: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

    代码块儿:

    去掉红框即正常,但text会显示不全

    报错信息:

    说没有transform属性,但肯定不是这个问题。。。之后研究一下

    57、Windows计划任务程序——查看历史记录总是报错,启动 Windows Event Log 报错4021,解决办法:

    找到“C:\Windows\System32\LogFiles\WMI”下的文件夹“RtBackup”,右击——“安全”,你就会看到在“组和用户名”的那个框里可能会没有SYSTEM这个用户,这个时候你点编辑----添加,在方框中键入SYSTEM,再点确定就可以了。同时对于SYSTEM这个用户,你把他的权限中的完全控制给选上,确定退出后,重启一下。

    58、Python 读取数据 内存问题:https://blog.csdn.net/youzhouliu/article/details/83745445

    59、几个Linux下操作的问题:

    1)多版本Python,怎么运行指定版本的Python?

    - 改Python指向: ln 目标路径的python /usr/bin/python

    如遇file exists的错,先 mv /usr/bin/python /usr/bin/python-old

    注:mv命令需要权限

    - 直接带路径执行:/opt/anaconda3/bin/python  XXX.py

    2)服务器jieba报错:

    permissionERROR

    是因为jieba加载模型时,需要在指定路径下建立temp文件

    解决:sudo  /opt/anaconda3/bin/python  XXX.py

    60、数据存储方面:注:csv文件(一张表)最多写1048576行,多的会被截掉!!! —— 错,csv行数无限制,只是用excel/WPS打开只显示1048576行,后实测,用notepad++打开有255百万行。

    最多104.8576W行

    百万量级文本数据导至本地,最好用.txt,大小只和磁盘内存有关,打开比同量级json快、稳定

    CSV作为大量级文本数据存储真是无比难用!!!bug众多!!!对不齐,编码,格式乱掉!!!你妹啊!!!!!!!

    用json/txt啊!!!!!!

    61、大量级文本样本数据存储:HDF5,lmdb,txt(多分文件),分布式文件系统

    62、csv导出乱码问题:逗号导致分隔出错,0开头的字符串被抹去 及解决方法

    逗号导致分隔出错,0开头的字符串被抹去

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

    63、winscp 主机通信连接断掉——也有可能是内存占满,连不上,掉线

    也有可能是内存占满,连不上,掉线

    64、服务器上路径配置问题,如果code和引用的包不在统一层级,且报错说找不到包的话,需要把工程路径加到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() 函数

     Python 内置函数

    描述

    dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

    66、Linux(centOS 7.6系统)下升级svn(从1.6到1.11)

    报错:

    --> 正在处理依赖关系 libsasl2.so.2()(64bit),它被软件包 subversion-1.11.0-1.x86_64 需要

    --> 解决依赖关系完成

    错误:软件包:subversion-1.11.0-1.x86_64 (WandiscoSVN)

              需要:libsasl2.so.2()(64bit)

    您可以尝试添加 --skip-broken 选项来解决该问题

    您可以尝试执行:rpm -Va --nofiles --nodigest

    libsasl2.so.2()(64bit)  对应的是centOS 6的某软件包,在centOS 7下找不到

    智障啊真是!!!!新版本路径配错!!!本机是centOS 7.6,配的升级路径是:baseurl=http://opensource.wandisco.com/centos/6/svn-1.11/RPMS/$basearch/

    然后一直报依赖包错误啊!!!还去yum update了所有包啊!!!!

    你妹!!!缺的是centOS 6.0下的包,怎么可能在centOS 7.6环境下装的上啊!!!

    照搬网上答案真的会把自己坑死!!!

    最后解决:

    baseurl=http://opensource.wandisco.com/centos/7/svn-1.11/RPMS/$basearch/

    或者(估计也有效):

    baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.8/RPMS/$basearch/

    配置文件:

    配置文件

    升级结果:

    升级到1.11成功

    意外收获:

    Linux下缺的依赖包下载地址:

    https://pkgs.org/download/libsasl2.so.2()(64bit)

    安装.so依赖包,如libsasl2.so.2()(64bit) —— 对应上述网址中下载的包名: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下查看系统版本:

    lsb_release -a

    升级初衷:

    也是报错……

    报svn subversion版本和客户端对不上的错,原因大概是我在windows下用了tortoriseSVN 是 1.11版本的,而Linux下的svn是1.6版本的,需要升级。

    ######

    妈的!搞半天!原来247(产品正式服务器)本来就没有升级svn,因为:

    一是外网服务器(云服务器)访问不了内网网址(svn代码管理服务器)!!!

    二是同步到对外发布(正式产品)服务器上的代码,必须手动确认,不能本地svn更新就直接拖!!!危险!!!影响产品!!!

    都是坑,西湖的水,我的泪~~~~

    67、服务器内外网

    让我们念三遍:

    外网(云服务器)是找不到内网(如内网管理svn的服务器)的机器的

    外网(云服务器)是找不到内网(如内网管理svn的服务器)的机器的

    外网(云服务器)是找不到内网(如内网管理svn的服务器)的机器的

    内网IP一般为:

    10.X.X.X、

    172.16.X.X-172.31.X.X、192.168.X.X等

    外网IP一般为:其他,如120.78.……

    68、环境变量问题:Python不是内部或外部命令

    1)右键Python 查看安装路径

    2)计算机-属性-高级系统设置-环境变量-path-加上:

    C:\python27;C:\python27\Scripts

    注意:不能省掉后一个!!!

    69、elasticsearch readtime out

    加大timeout参数,增加客户端health设置

    用scroll_id翻页时,遇到read timeout 可能会取不全(某几页就取不到),但如果不用翻页,要么程序轮询完节点,都timeout 于是报错退出,要么就能取全。

    70、ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory

    原因:TensorFlow的版本和cuda版本不一致,需要cuda-10.0的版本

    解决:

    1)在linux系统普通用户目录(cd /home/xxx)下的.bashrc文件中,加上cuda-10.0的路径:

    export LD_LIBRARY_PATH = $ LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64/

    2)执行source ~.bashrc激活配置

    3)再次执行程序,问题得到解决~

    附注:

    1)TensorFlow和cuda版本对应:https://tensorflow.google.cn/install/source

    TensorFlow VS cudnn CUDA

    2)查看cuda和cudnn版本:https://blog.csdn.net/Teeyohuang/article/details/79082003

    cuda一般安装在 /usr/local/cuda/ 或 /usr/local/cuda-10.0/  路径下,该路径下有一个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

    查看.bashrc文件

    71、Beyond Compare 4 提示错误“授权密钥已被吊销”的解决办法

    错误提示:

    授权密钥已被吊销。

    解决方法:

    删除以下目录中的所有文件即可。

    C:\Users\Administrator\AppData\Roaming\Scooter Software\BeyondCompare4

    72、pip装包/升级太慢 - 换国内的源

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn +包名

    73、git拉取gitlab工程报错:

    拉取项目显示错误信息

    remote: Repository not found.

    fatal: repository 'http://192.168.1.13/xxx/xxx.git' not found

    原因:因为以前使用过其他帐号配置信息都保存了,然后帐号密码默认用以前的导致拉取没有权限

    解决方法:

    执行cmd命令

        git clone http://username:password@192.168.1.13/xxx/xxx.git

    74、elasticsearch写入速度(针对es.bulk操作超时报错的情况)优化:https://blog.csdn.net/jiao_fuyou/article/details/78518209

    具体报错:

    具体优化操作:

    ① 关掉索引副本:

    你的index/_settings PUT

    {

        "number_of_replicas": 0

    }

    写完后,再把number_of_replicas置为>0的某个数即可

    ② 更改一些配置:

    主要是优化提交和更新数据的周期和大小,注意:需要关闭索引后执行,执行结束后再打开!

    总结:put和get操作(原理)知识匮乏,导致之前看人家说可以怎么怎么优化,却不知道具体操作方法。。。现在依然一知半解,需要回去恶补下

    75、test(**kwargs)** 的作用则是把字典 kwargs 变成关键字参数传递。比如上面这个代码,如果 kwargs 等于 {'a':1,'b':2,'c':3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。

    76、报错:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

    原因:同一个端口的进程没有kill掉

    解决:① 打开cmd

              ② netstat -aon|findstr +端口号 查找pid

              ③ tasklist /fi “pid eq 276”,276是你在①中查到的pid号

              ④ taskkill /pid 276 /f,杀掉276的进程 // 或者打开任务管理器,杀死进程号=276的进程

    具体图文参见:[https://blog.csdn.net/sinat_19917631/article/details/70228718](https://blog.csdn.net/sinat_19917631/article/details/70228718)

    77、写函数时,参数(入参和返回)标清类型和要求:

    def judge_idx_type_with_keywords_n_cates(data_dict:dict, idx_type:str)->bool

    可用:函数名.__annotations__查看参数属性

    78、progresql 备份数据库遇到的坑relation “XXX_id_seq” does not exist

    从mysql 数据库转用psotgresql ,练手的时候打算备份数据库,转存sql脚本

    运行sql脚本的时候数据和结构都刷不过来,于是检查sql脚本和报错,一直报relation "performance_id_seq" does not exist ,查阅文档得知:

    在postgresql表中建立了自增字段,id定义为Serial 类型,当执行完成建表语句后,其字段便成:

    "id" int4 NOT NULL DEFAULT nextval('performance_id_seq'::regclass)

    这种形式

    但是导出sql脚本时候直接定义成这种形式,postgresql不能识别,想必是postgresql的一个小bug吧,因此自增的id,在建表的时候应该定义为:

    “id”  serial

    相关文章

      网友评论

          本文标题:入坑合集

          本文链接:https://www.haomeiwen.com/subject/jquahftx.html