社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Ben  »  全部回复
回复总数  8

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"})
3 年前
回复了 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
6 年前
回复了 Ben 创建的主题 » Pod更新后Github缺少文件(XCode)

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

9 年前
回复了 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)
6 年前
回复了 Ben 创建的主题 » python cmd2中断打印promp

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

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

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

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

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

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

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

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

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

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

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