Skip to main content
 首页 » 编程设计

python之如何用文件作为键在 Python 中制作字典

2025年05月04日17tuyile006

我正在尝试使用 Requests 和 Glob 将本地驱动器上文件夹中的所有文件发布到某个 Web URL。每次我将新文件发布到 URL 时,我想向字典中添加一个新的“键值”项,即“文件名(键),发布文件后从服务器输出(值)”:

import requests, glob, unicodedata 
 
outputs = {} 
 
text_files = glob.iglob("/Users/ME/Documents/folder/folder/*.csv") 
 
url = 'http://myWebsite.com/extension/extension/extension' 
 
for data in text_files: 
    file2 = {'file': open(data)} 
    r = requests.post(url, files=file2) 
    outputs[file2] = r.text 

这给了我错误:

Traceback (most recent call last): 
  File "/Users/ME/Documents/folder/folder/myProgram.py", line 15, in <module> 
 
    outputs[file2] = r.text 
TypeError: unhashable type: 'dict' 

这是因为(我认为)“file2”属于“dict”类型。在我将其发布为文件名字符串后, 是否可以转换/更改“file2”?

请您参考如下方法:

您正在尝试使用文件对象,而不是文件名称。使用data作为key:

for data in text_files: 
    file2 = {'file': open(data)} 
    r = requests.post(url, files=file2) 
    outputs[data] = r.text 

更好的是,使用更有意义的名称,并使用 with 为您再次关闭打开的文件对象:

for filename in text_files: 
    with open(filename) as fileobj: 
        files = {'file': fileobj} 
        r = requests.post(url, files=files) 
    outputs[filename] = r.text