我正在使用`discord.py 开发一个机器人。机器人创建/删除多个频道,并连接到 SQLite 数据库。如果机器人崩溃,我希望它崩溃
这是关闭协程:
async def shutdown(self):
print("Shutting down Canvas...")
for ch in self.active_channels:
await client.delete_channel(ch)
self.db.close()
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
# Canv is the interface between the bot and the data we're collecting
atexit.register(canv.shutdown)
bot.run(TOKEN)
Run Code Online (Sandbox Code Playgroud)
try:
bot.loop.run_until_complete(bot.start(TOKEN))
except KeyboardInterrupt or InterruptedError:
bot.loop.run_until_complete(canv.shutdown())
finally:
bot.loop.close()
Run Code Online (Sandbox Code Playgroud)
from async_generator import asynccontextmanager
@asynccontextmanager
async def cleanup_context_manager():
try:
yield
finally:
await canv.shutdown()
with cleanup_context_manager():
bot.run(TOKEN)
Run Code Online (Sandbox Code Playgroud)
这些都没有运行canv.shutdown(),这是一个asyncio.coroutine. 如何确保此代码在每种类型的出口上运行?
我用这篇文章来获取一些信息,我认为它最接近我想要的。
我正在编写一个需要重新分配队列的 Django 应用程序,因此我必须使用 WSL 来继续在 Windows 上进行开发。我很高兴地发现 Pycharm Professional 允许您配置 WSL Python 解释器。然而,我的第一个问题是它无法找到任何环境变量。没什么大不了的,这个页面说我可以export从一个名为~/.profile. 我像这样添加它们:
export SECRET_KEY="xxxxx"
export DATABASE_URL="postgres://xxxxx"
Run Code Online (Sandbox Code Playgroud)
但我的 Pycharm 解释器找不到它们,总是抱怨:
SECRET_KEY = os.environ['SECRET_KEY']
File "/usr/lib/python3.6/os.py", line 669, in __getitem__
raise KeyError(key) from None
KeyError: 'SECRET_KEY'
Run Code Online (Sandbox Code Playgroud)
但是,如果我打开 Ubuntu bash 终端并运行 Python3,它会正常找到该值。我尝试使用~/.pam_environment和./bashrc,但这些都不起作用,即使手动检查也是如此。
如何让 PyCharm/WSL 访问我的 WSL 环境变量?
python ubuntu environment-variables pycharm windows-subsystem-for-linux
我想将文件拖到窗口中并获取文件路径.我试过这样做:
class CSVDropper(wx.FileDropTarget):
def __init__(self, data):
wx.FileDropTarget.__init__(self)
self.data = data
def OnDropFiles(self, x, y, filenames):
self.data = filenames
print self.data
Run Code Online (Sandbox Code Playgroud)
然后在主窗口中:
# Drag & Drop
self.csv_path = None
self.drop_table = CSVDropper(self.csv_path)
self.SetDropTarget(self.drop_table)
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.我已经尝试过运行这个教程代码,但它也没有做任何事情.我该如何做到这一点?
我正在尝试使用printf来获得以下编程输出:
- 20
- 15
- 10
- 5
0
+ 5
+ 10
+ 15
+ 20
Run Code Online (Sandbox Code Playgroud)
关键规格是:
到目前为止,我还没有能够提出一个能给我预期结果的printf语句.我最接近的是:
for(int i = -20; i <= 20; i+=5)
{
printf("%-+4d \n", i);
}
Run Code Online (Sandbox Code Playgroud)
产生:
-20
-15
-10
-5
+0
+5
+10
+15
+20
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,而不必做任何繁琐的字符串操作?
我正在将程序从C移植到TCL,我正在尝试实现类似于C中的数组的数据结构.我需要做的两件事是
我会在运行时知道数组的大小,并且整个程序的大小不应该改变(所以它是静态的).是否有适合此法案的数据结构?
如果重要,我正在使用TCL 8.6
编辑:我还需要能够从函数返回数据结构.
我有一个我正在为 SciKit Learn PCA 格式化的 DataFrame 看起来像这样:
datetime | mood | activities | notes
8/27/2017 | "good" | ["friends", "party", "gaming"] | NaN
8/28/2017 | "meh" | ["work", "friends", "good food"] | "Stuff stuff"
8/29/2017 | "bad" | ["work", "travel"] | "Fell off my bike"
Run Code Online (Sandbox Code Playgroud)
...等等
我想把它改成这个,我认为这对机器学习工作会更好:
datetime | mood | friends | party | gaming | work | good food | travel | notes
8/27/2017 | "good" | True | True | True | False | False | False …Run Code Online (Sandbox Code Playgroud) python ×4
c ×2
arrays ×1
asynchronous ×1
dataframe ×1
discord.py ×1
filepath ×1
formatting ×1
pandas ×1
printf ×1
pycharm ×1
scikit-learn ×1
string ×1
tcl ×1
ubuntu ×1
windows-subsystem-for-linux ×1
wxpython ×1
wxwidgets ×1