私信  •  关注

Ben

Ben 最近回复了

FileUpload 是python对象,在使用之前需要以某种方式序列化它 requests.post() 然后对其进行反序列化,然后通过 content = await form["upload-file"].read() .我觉得你不想连载 文件上传 对象(如果可能的话),而是阅读表单数据的内容,然后发布。

更妙的是,如果您的其他FASTAPI终结点是同一服务的一部分,那么您可以考虑只调用一个函数,并完全避免请求(可能使用路由函数调用的控制器函数,以防您还需要从服务外部调用该端点,然后只需直接调用控制器函数,避免路由和请求的需要)。通过这种方式,您可以传递任何您想要的内容,而无需序列化它。

如果你必须使用请求,那么我会阅读表单的内容,然后用表单数据创建一个新帖子。例如

form = await request.form()  # starlette.datastructures.FormData
upload_file = form["upload_file"]  # starlette.datastructures.UploadFile - not used here, but just for illustrative purposes
filename = form["upload_file"].filename  # str
contents = await form["upload_file"].read()  # bytes
content_type = form["upload_file"].content_type  # str
...
data = {k: v for k, v in form.items() if k != "upload-file"} # the form data except the file
files = {"upload-file": (filename, contents, content_type)} # the file
requests.post(models_config["avatar_api"], files=files, data=data, headers = {"response-type": "blob"})
2 年前
回复了 Ben 创建的主题 » 我应该如何在Python结构中使用extglob?

看来 extglob 不幸的是,不能与Python Fabric一起使用。

bash docs

extglob 更改某些字符的解析方式。这是必要的 有一个 新线 ( 不仅仅是分号 )中间 shopt -s extglob 和 使用它的任何后续命令。

但是从 Fabric docs

虽然Fabric可以用于许多类似shell脚本的任务,但有一个 稍微不敏感的捕获:每个 run [...] 有 它自己独特的shell会话 .这是必需的 为了让Fabric可靠地计算出 运行,它的标准输出/错误和返回代码是什么。

幸运的是,可以使用Bash的GLOBIGNORE shell变量实现类似的功能

GLOBIGNORE shell变量可用于限制文件集 匹配模式的名称。如果设置了GLOBIGNORE,则每个匹配的文件 与GLOBIGNORE中的模式之一匹配的名称将被删除 从匹配列表中。如果设置了nocaseglob选项,则 根据GLOBIGNORE中的模式进行匹配时不需要 关于这个案子。文件名。和当 GLOBIGNORE已设置且不为空。但是,将GLOBIGNORE设置为 非null值具有启用dotglob shell选项的效果,因此 以a开头的所有其他文件名。会匹配的。去变老 忽略以..开头的文件名的行为。,制造。*什么之中的一个 Global中的模式被忽略。在以下情况下,dotglob选项将被禁用: 这是不确定的。

这也容易忽略 . .. 扩展通配符时,删除所有文件-除了'。在一个目录中,我们可以

c.run("GLOBIGNORE='.venv'; rm -Rf {project_path}*")

Django guardian有一个快捷方式叫做 get_groups_with_perms(obj) 那个 Returns queryset of all Group objects with any object permissions for the given obj . https://django-guardian.readthedocs.io/en/stable/api/guardian.shortcuts.html#get-groups-with-perms

Django有一个名为 intersection 那个 returns the shared elements of two or more QuerySets https://docs.djangoproject.com/en/3.2/ref/models/querysets/#intersection

使用这两个函数,我可以找到用户所在的、对该对象也有权限的组。然后,我使用for循环来标识具有该权限的组。如果两个组都有权限,我不知道如何确定是哪一个组给了用户权限,因此返回找到的第一个组。

# Find the union of groups
groups = user.groups.all().intersection(get_groups_with_perms(obj))

# Check if any group has the permission, and return if True
for group in groups:
    if 'change_site' in get_perms(group, obj):
        return group
return None
5 年前
回复了 Ben 创建的主题 » Pod更新后Github缺少文件(XCode)

对于后来偶然发现这个问题的人来说,我不知道如何修复丢失的文件问题,所以我只是在pod更新之前将项目回滚到git。

8 年前
回复了 Ben 创建的主题 » 如何在python pandas中的列中删除重复的名称[重复]

这在熊猫身上要容易得多 drop_duplicates 以及keep参数。

import pandas as pd
df = pd.DataFrame({"A":["foo", "foo", "foo", "bar"], "B":[0,1,1,1], "C":["A","A","B","A"]})
df.drop_duplicates(subset=['A', 'C'], keep=False)
5 年前
回复了 Ben 创建的主题 » python cmd2中断打印promp

您正在阻止尝试读取1024字节,所以必须等到整个缓冲区都填满。要执行正确的基于行的缓冲有点棘手,但是一个简单的(尽管没有性能)实现是一次读取一个字符并检查它是否是换行符:

line = ""
while True:
   data = conn.recv(1)
   line += data
   if data in "\n\r":
       break

(这不是很好的代码,但让我们看看这是否解决了问题,我们可以改进它。)

14 年前
回复了 Ben 创建的主题 » jquery ui themeroller-安装主题

平滑度是下载jquery ui时得到的“默认”gery主题。当您滚动自己的主题时,CSS目录应该有一个“自定义”目录,其中包含滚动的主题。

您确定在下载jqueryui而不是自定义或其他主题时没有选择平滑度teheme吗?

有时,当您更改主题时,需要实际重新加载页面(F5)以查看更改。

8 年前
回复了 Ben 创建的主题 » 在贵公司使用Git(或其他一些VCS)

许多公司使用开放源码工具,如mercurial、git或svn。在我工作的地方,我们几乎只使用SVN,我们搬走了。 ClearCase 几年前。

与商业竞争对手相比,这些工具中的许多更容易、更轻、更可配置和更好的支持。此外,许多新员工将已经熟悉mercurial、git,甚至在开源或学校工作的颠覆。你真的不能指望每个用户花费4000美元的软件也能做到这一点。

如果您担心支持,有些公司是通过支持(和托管)开源版本控制来开展业务的。我在想 Fog Creek's Kiln ,请 Atlassian (谁拥有 BitBucket )当然。 GitHub 在一个较小的程度上(曾经想知道到底是谁购买了多用户 paid GitHub plans ?是的……企业也使用Git。)