使用Python请求模块从存档中发布单个文件

使用Python请求模块从存档中发布单个文件,python,rest,python-requests,zipfile,Python,Rest,Python Requests,Zipfile,我正在使用Python请求模块将数据发布到服务器。对于数据,我有一个存档,我正在筛选并发布除.txt文件以外的所有文件。我的代码贴在下面。现在,文件已成功上载,但存档的目录结构保留下来 有没有办法只上传基本文件而不上传所有子目录 import zipfile import requests archive = 'my_archive.zip' url = 'https://example.com' zf = zipfile.ZipFile(archive) files = zf.namelis

我正在使用Python请求模块将数据发布到服务器。对于数据,我有一个存档,我正在筛选并发布除.txt文件以外的所有文件。我的代码贴在下面。现在,文件已成功上载,但存档的目录结构保留下来

有没有办法只上传基本文件而不上传所有子目录

import zipfile
import requests

archive = 'my_archive.zip'
url = 'https://example.com'
zf = zipfile.ZipFile(archive)
files = zf.namelist()
files = list(filter(lambda x: not x.endswith('/'), files))
files = list(filter(lambda x: not x.lower().endswith(('.txt')), files))
for f in files:
    response = requests.post(url,
                            auth=usrPass)                                   
                            data=zf.read(f))

您确定这就是您在实际代码中所做的吗?因为您似乎没有在
请求.post
调用中的任何位置传递文件名。我的url实际上有点复杂。它包含一个filename参数,因此每个文件都将指向一个唯一的url。例如,
url=https://example.com/data/archive/files/{filename}'
这个文件名是
f
(您的
循环的
控制变量)?在本例中,它包含整个路径,而不仅仅是文件名。执行
filename=f.split('/')[-1]
可能会修复它。是的,
filename
就是您描述的。我的问题是,整个路径需要zipfile来阅读。这样就可以创建所有路径,而不仅仅是上传文件。啊,事实上,没关系。我看到我没有改变文件名,只是抓住最后一部分。谢谢你的帮助。