问答

1、columns overlap but no suffix specified: Index([‘data1‘, ‘data2‘], dtype=‘object‘)解决方法

执行最后一句语句时报错columns overlap but no suffix specified: Index(['data1', 'data2'], dtype='object'),然后发现是两个DataFrame 的列名重复了,join不会像merge一样,merge会将重名的列明自动加上_x,_y加以区分,而join直接报错。 所以,我们的解决方法是修改其列名就好了。

2、发现with...as这种结构无法跳出循环

它本身可能不是一种循环。

content = ''
index = 0
with open('./notebook.json', encoding = 'utf-8') as fd:
    ch = fd.read(1)
    print(ch)
    fd.close()
    content += ch

    index += 1
    #if index > 55:
    #    fd.close()

始终都是输入文件全部内容。

使用方法封装,return跳出是可以的,但是read()还是一次性读取完。

3、Python报错:'dict' object has no attribute 'iteritems'(机器学习实战kNN代码)解决方案

原因在于:python3中已经没有 “iteritems” 这个属性了,现在属性是:“ items ” 。

4、UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: inva

问题出在函数入参上,因为在前面的函数里把fw = open(filename,'w')改成了fw = open(filename,'wb'),所以在这个函数中也把fr = open(filename)改为fr = open(filename,'rb'),问题解决,事实证明确实是函数入参不同导致的。

mode参数 |可做操作 |若文件不存在 |如何处理原内容 |:---:|:---:|:---:|:---:| r |只可读 |报错 |- r+ |可读可写 |报错 |是 w |只可写 |创建 |是 w+ |可读可写 |创建 |是 a |只可写 |创建 |否,追加 a+ |可读可写 |创建 |否,追加 x |只可写 |创建 |- x+ |可读可写 |创建 |-

5、Module ctypes has no attribute 'windll'

It seems like you're trying to use a Windows module on a non Windows enviroment, if you check the ctype module it has some conditional classes:

if _os.name == "nt":

    class WinDLL(CDLL):
        """This class represents a dll exporting functions using the
        Windows stdcall calling convention.
   [...]

https://docs.python.org/3/library/ctypes.html

linux的ctypes库没有win32api就是这么简单。

想使用这个获取文件占用空间大小,目前探索只能通过stat命令,然后通过块数量乘以块大小计算所得,没有相应的命令查询。

6、Python错误:TypeError: 'int' object is not callable解决办法

看到这个错误我先是一愣,心想:“int对象不可调用?我没有调用Int型数据啊,我调用的是一个函数方法!”。调来调去都没有解决。Google后才发现,这个错误之所以发生,是因为我变量名和函数名写重复了!

我的错误使用是: print(stat.S_IEXEC(mode))

正确使用方法是: print(mode & stat.S_IEXEC)

7、ValueError: invalid literal for int() with base 10:解决方法

原因:由于python不能直接将包含小数点的字符串转化为整数,而原始数据的格式经常是不一致的,故类型转化时造成ValueError异常。 解决方法:先将字符串转换为浮点数float,在将浮点数转化为整数int。

a=int(float('123.456'))

8、it/s是什么单位?

iterator:迭代器,迭代程序 it/s 每秒迭代次数,如果迭代一次为一行,则表示平均每秒读取的行数 iterator/s, 比如下图如果运行比较快显示 it/s ,如果设置每秒迭代一次则显示1.00s/it

from common import *

for i in tqdm(range(1000000)):
    pass

for i in tqdm(range(10)):
    time.sleep(1)

(base) C:\Users\test\Desktop\fastflux_detect_preliminary>python study.py
100%|████████████████████████████████████████████████████████████████████| 1000000/1000000 [00:00<00:00, 4318913.29it/s]
100%|████████████████████████████████████████████████████████████████████| 10/10 [00:10<00:00,  1.01s/it]

9、发现使用exec来缩减优化代码会带来运行效率降低很多倍

%%time
# 初始化列表
for col_dict in col_dicts:
    exec('{}_li = []'.format(col_dict))

for items in tqdm(agg_df['rdatalist'].values):
    # 置空临时列表
    for col_dict in col_dicts:
        exec('{}_tmp = []'.format(col_dict))

    for ip in items:
        try:
            for col_dict in col_dicts:
                exec('{}_tmp.append({}_dict[ip])'.format(col_dict, col_dict))
        except:
            logger.error('failed, ip {}'.format(ip))
            pass

    # 将临时列表添加到主列表
    for col_dict in col_dicts:
        exec('{}_li.append({}_tmp)'.format(col_dict, col_dict))

这个实测在接近3个小时吧
26%|████████████████                                               | 53922/208211 [31:15<32:14:10, 2.46it/s]

多年的大佬写的代码还是展开,说明展开写还是有它的道理。

judgement_li = []
networkTags_li = []
threatTags_li = []
expired_li = []
continent_li = []
country_li = []
province_li = []
city_li = []
district_li = []
timeZone_li = []
organization_li = []
operator_li = []
for items in tqdm(agg_df['rdatalist'].values):
    judgement_tmp = []
    networkTags_tmp = []
    threatTags_tmp = []
    expired_tmp = []
    continent_tmp = []
    country_tmp = []
    province_tmp = []
    city_tmp = []
    district_tmp = []
    timeZone_tmp = []
    organization_tmp = []
    operator_tmp = []
    for ip in items:
        try:
            judgement_tmp.append(judgement_dict[ip])
            networkTags_tmp.append(networkTags_dict[ip])
            threatTags_tmp.append(threatTags_dict[ip])
            expired_tmp.append(expired_dict[ip])
            continent_tmp.append(continent_dict[ip])
            country_tmp.append(country_dict[ip])
            province_tmp.append(province_dict[ip])
            city_tmp.append(city_dict[ip])
            district_tmp.append(district_dict[ip])
            timeZone_tmp.append(timeZone_dict[ip])
            organization_tmp.append(organization_dict[ip])
            operator_tmp.append(operator_dict[ip])
        except:
            pass
    judgement_li.append(judgement_tmp)
    networkTags_li.append(networkTags_tmp)
    threatTags_li.append(threatTags_tmp)
    expired_li.append(expired_tmp)
    continent_li.append(continent_tmp)
    country_li.append(country_tmp)
    province_li.append(province_tmp)
    city_li.append(city_tmp)
    district_li.append(district_tmp)
    timeZone_li.append(timeZone_tmp)
    organization_li.append(organization_tmp)
    operator_li.append(operator_tmp)

100%|████████████████████████████████████████████████████████████████████| 208211/208211 [05:47<00:00, 598.44it/s]

results matching ""

    No results matching ""