相关疑难解决方法(0)

明确关闭文件重要吗?

在Python中,如果您在未调用的情况下打开文件close(),或者关闭文件但未使用try- finally或" with"语句,这是一个问题吗?或者它是否足以作为编码实践依赖Python垃圾收集来关闭所有文件?例如,如果有人这样做:

for line in open("filename"):
    # ... do stuff ...
Run Code Online (Sandbox Code Playgroud)

...这是一个问题,因为文件永远不会被关闭,并且可能发生一个阻止它被关闭的异常?或者它肯定会在for声明结束时关闭,因为文件超出了范围?

python garbage-collection file

141
推荐指数
4
解决办法
6万
查看次数

使用 Python 请求通过 POST 请求发送图像

我目前正在尝试使用 Python (3.5) 和 Requests 库来发送 POST 请求。此 POST 将发送一个图像文件。这是示例代码:

import requests

url = "https://api/address"

files = {'files': open('image.jpg', 'rb')}
headers = {
    'content-type': "multipart/form-data",
    'accept': "application/json",
    'apikey': "API0KEY0"
    }
response = requests.post(url, files=files, headers=headers)

print(response.text)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行代码时,我收到 400 错误。我设法到达了 API 端点,但在响应中它指出我未能发送任何文件。

{
  "_id": "0000-0000-0000-0000", 
  "error": "Invalid request", 
  "error_description": "Service requires an image file.", 
  "processed_time": "Tue, 07 Nov 2017 15:28:45 GMT", 
  "request": {
    "files": null, 
    "options": {}, 
"tenantName": "name", 
"texts": []
  }, 
  "status": "FAILED", 
  "status_code": 400, 
  "tenantName": "name"
}
Run Code Online (Sandbox Code Playgroud)

“文件”字段显示为空,这对我来说似乎有点奇怪。POST 请求在 …

python post python-3.x python-requests postman

6
推荐指数
1
解决办法
1万
查看次数

如何使用 requests.put() 使用 Python 上传文件?

我正在尝试使用 Python 中的请求库将文件上传到本地主机上的 Fedora 公共存储库。我相当肯定我的主要问题是不理解open()/read()以及我需要做什么才能通过 http 请求发送数据。

def postBinary(fileName,dirPath,url):
    path = dirPath+'/'+fileName
    print('to ' + url + '\n' + path)
    openBin = {'file':(fileName,open(path,'rb').read())}
    headers = {'Slug': fileName} #not important
    r = requests.put(url, files=openBin,headers=headers, auth=HTTPBasicAuth('username', 'pass'))
    print(r.text)
    print("and the url used:")
    print(r.url)
Run Code Online (Sandbox Code Playgroud)

这将成功上传存储库中文件,但之后它会稍大并损坏。例如,一个 6.6kb 的图像变成了 6.75kb 并且不再可以打开。

那么我应该如何使用 put in python 正确打开和上传文件?

###额外的细节:###

  • 当我替换files=openBindata=openBin我的字典时,我将数据假定为字符串。我不知道这些信息是否有帮助。
    "file=FILE_NAME.extension&file=TYPE89a%24%02Q%03%E7%FF%00E%5B%19%FC%....并且文件的大小增加到若干兆字节

  • 我特别使用 put 因为 Fedora RESTful HTTP API 端点说要使用put.

以下命令确实有效:

curl -u username:password -H "Content-Type: …

python encoding python-requests fedora-commons

3
推荐指数
1
解决办法
2万
查看次数