聪明,是一种简单美学

1月初,朋友圈的两起刷屏事件,让我受到莫大惊吓。我先是赶紧去买了一瓶矿泉水,又去给自己泡了一杯咖啡压压惊。这两起刷屏事(yao)件(言)分别是:“瓶装水有毒”和“咖啡致癌”。我不怕死么?当然怕死,但是我更怕蠢死。一直喜欢一条朴素定律——一个事、一个人如果让你觉得眼花缭乱,那么就极有可能是错的或是假的。其实,每一年,朋友圈都会有这种耸人听闻的谣言,也构成了朋友圈一大反智主义现象——宁信谣言,不信权威。拆穿这些谣言,无需权威,只要有简单的常识即可——抛开剂量谈毒性就是耍流氓。让我不明白的是,按道理,

wagtail改网页报错

# OperationalError at /
no such column: home_homepage.body

原因是我只执行了生成迁移文件
python manage.py makemigrations 没有执行迁移过程 python manage.py migrate

python安装win32gui win32api

今天需要用到自动化工具win32gui,但是网上教程发现需要安装pywin32

于是,在命令行输入:

pip install -i https://pypi.doubanio.com/simple/ pywin32
但是安装完成后发现,win32gui依然不能用,经过查阅资料发现:

将pypiwin32添加进环境变量就可以,

1、先安装pypiwin32包

pip install pypiwin32

2、找到文件pywin32_postinstall.py的路径,一般在安装文件下的Scripts文件里,在路径下运行

python pywin32_postinstall.py -install

先找到anaconda环境python解释器文件夹,在Lib文件中找到site-packages\pywin32_system32,如下图所示:

把里面的所有的文件复制到:C:\Windows\System32,然后在VSCODE上继续执行py脚本,执行正常。

python用zip函数将数组写入csv

zip()函数是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。利用 * 号操作符,可以将元组解压为列表。以下是一个示例代码:

a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
zipped = zip(a, b, c)
print(list(zipped))

在上面的代码中,我们将三个列表合并为一个元组,然后使用zip()函数将它们打包在一起

你可以使用Python的csv模块来写入不等长的列表。你可以使用csv.writer()函数来写入csv文件,该函数接受一个可迭代对象,例如列表。如果列表中的元素数量不同,则会将其对齐到最短的一列数据。你可以使用zip()函数将多个列表合并为一个元组,然后将元组写入csv文件。以下是一个示例代码

import csv
list1 = [1, 2, 3]
list2 = [4, 5]
list3 = [6, 7, 8, 9]
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
for row in zip(list1, list2, list3):
writer.writerow(row)

在上面的代码中,我们将三个长度不同的列表合并为一个元组,然后将元组写入csv文件。请注意,我们使用zip()函数将多个列表合并为一个元组,并使用csv.writer()函数将元组写入csv文件

fileinput库怎么用

fileinput库怎么用

fileinput 库是 Python 标准库中的一个模块,可以用于读取多个文件的内容,它可以从一个或多个文件中读取数据,也可以从标准输入读取数据。

下面是一个简单的例子,展示如何使用 fileinput 从文件中读取数据:

import fileinput
# 打开文件
with fileinput.input('file.txt') as f:
# 逐行读取文件内容
for line in f:
# 处理每一行的数据
print(line.strip())

在上面的代码中,我们使用 fileinput.input() 函数打开文件 'file.txt',并使用 with 语句处理文件读取过程中的异常。然后,我们使用 for 循环逐行读取文件内容,对每一行的数据进行处理,并打印出来。

除了从文件中读取数据之外,fileinput 还可以从标准输入读取数据。例如,下面的代码演示了如何从标准输入读取数据:

import fileinput
# 从标准输入读取数据
for line in fileinput.input():
# 处理每一行的数据
print(line.strip())

在上面的代码中,我们没有指定要读取的文件名,而是直接使用 fileinput.input() 函数从标准输入读取数据。然后,我们使用 for 循环逐行读取输入数据,并对每一行的数据进行处理,并打印出来。

除了上面演示的例子外,fileinput 还有其他一些功能,例如可以指定多个文件进行读取,也可以在读取文件时进行原地替换等等。具体使用方法可以参考官方文档。

和open readline的区别

fileinput 库和 open() 函数以及 readline() 方法都可以用于读取文件内容,但它们之间有一些区别。

open() 函数是 Python 中最基本的文件读写函数,用于打开一个文件并返回一个文件对象。可以通过 readline() 方法逐行读取文件内容,或者使用 read() 方法读取整个文件内容。例如:

with open('file.txt', 'r') as f:
line = f.readline()  # 读取文件的一行内容
content = f.read()  # 读取整个文件的内容

fileinput 库可以读取多个文件的内容,也可以从标准输入读取数据。与 open() 函数不同,fileinput 库可以在读取文件时进行原地替换。例如:

import fileinput
# 读取多个文件的内容
for line in fileinput.input(['file1.txt', 'file2.txt']):
# 处理每一行的数据
print(line.strip())
# 原地替换文件内容
with fileinput.input('file.txt', inplace=True) as f:
for line in f:
print(line.replace('old', 'new'), end='')

readline() 方法只能逐行读取文件内容,并且需要在循环中进行迭代。例如:

with open('file.txt', 'r') as f:
while True:
line = f.readline()
if not line:
break
# 处理每一行的数据
print(line.strip())

需要注意的是,readline() 方法在读取文件内容时,会将文件内容一行一行地读取到内存中,如果文件非常大,可能会导致内存占用过高。因此,如果需要处理大文件,建议使用 fileinput 库或者其他的流式读取方式。

dataframe分割

分割后取第二列,获得的是字符串:
data_num=data_num[0].str.split(';',expand=True)[1]

python pandas的一个使用技巧。
Pandas DataFrame 直接取一行数据会得到Series,
如果想让结果保持原dataframe格式,在索引外加 [] 即可。


s2 = test_df.loc[[0],:]
```<!--autointro-->

ctypes怎么查看dll有哪些函数

您可以使用 ctypes 模块提供的 windll 或 cdll 属性来加载 DLL 并使用 dir() 函数列出其中的函数。

以下是一个简单的示例:

import ctypes
# 加载 DLL
mydll = ctypes.windll.LoadLibrary("MyDll.dll")
# 列出 DLL 中的函数
print(dir(mydll))

在这个示例中,我们使用 ctypes.windll.LoadLibrary() 函数加载 DLL,并使用 dir() 函数列出其中的函数。windll 属性用于加载使用 Win32 API 调用约定的 DLL,cdll 属性用于加载使用 C 调用约定的 DLL。

运行这个脚本,它将加载 DLL 并输出其中的函数列表。

请注意,如果您的 DLL 使用了 C++,则需要在 DLL 中使用 extern "C" 包裹函数声明,以确保 C++ 名称修饰不会影响导出函数的名称。

总结一下:

  • 使用 ctypes 模块提供的 windll 或 cdll 属性可以加载 DLL 并列出其中的函数。

  • 使用 ctypes.windll.LoadLibrary() 函数加载 DLL。

  • 使用 dir() 函数列出 DLL中的函数。

  • 如果您的 DLL 使用了 C++,则需要在 DLL 中使用 extern "C" 包裹函数声明,以确保 C++ 名称修饰不会影响导出函数的名称。

读取数据readlines()去掉换行符

读取数据readlines()去掉\n
样式

f = open("file.txt",encoding='utf-8')
date = f.readlines()
print(date)
f.close()
# 结果: ['我是主帅\n', '我来自河北\n', '我喜欢中国']

第一种方法,用splitlines()去除

f = open("file.txt",encoding='utf-8')
date = f.read().splitlines()
print(date)
f.close()
#结果:['我是主帅', '我来自河北', '我喜欢中国']

这种方法用到了splitlines():
Python splitlines() 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
第二种方法,

f = open("file.txt",encoding="utf-8")
date = f.readlines()
date = ''.join(date).strip('\n')
print(date)
f.close()
# 结果:
# 我是主帅
# 我来自河北
# 我喜欢中国

用join将列表转换为新的字符串,再用strip()去掉空白符(\n)
join():
Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串
strip():
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
encoding只是编码问题

conda-PackagesNotFoundError的解决办法

解决方法一:将conda-forge添加到搜索路径上
首先,当出现这种报错时,应该首先尝试使用以下命令将conda-forge channel添加到你的channel列表中:
conda config --append channels conda-forge
它告诉conda在搜索软件包时也要在conda-forge channel上查看。
然后你就可以尝试利用如下命令再次安装
conda install 包名
原因在于:channel可以看成是托管python包的服务器,当无法通过标准channel获得python包时,社区驱动的conda-forge通常是一个很好的地点。大部分问题都可以利用这条语句解决。