Hướng dẫn python read file from request - python đọc tệp từ yêu cầu

Tôi đang cố gắng tạo một dịch vụ web bằng Python hoặc R. Dịch vụ web này sẽ có thể nhận một tệp dưới dạng đầu vào và xử lý nó. Cho đến nay tôi đã đưa ra yêu cầu API như sau trong Python:

import requests
with open('userdata.txt','rb') as payload:
    r = requests.post('https://localhost:8080/upload', data=payload, verify=False)

Tuy nhiên, tôi không chắc chắn làm thế nào để thiết lập dịch vụ web "/tải lên". Tôi có sẵn Python và/hoặc R để xử lý yêu cầu vì nó là trên một máy chủ mà tôi không thể truy cập thêm. Nhiệm vụ tổng thể là nhận tệp, tải một thuật toán học máy, phân loại văn bản bên trong tệp và trả về câu trả lời với điểm số, nếu điều đó thay đổi bất cứ điều gì.

Cảm ơn trước!


Python cung cấp các mô -đun khác nhau như urllib, yêu cầu vv để tải xuống các tệp từ web. Tôi sẽ sử dụng thư viện yêu cầu của Python để tải xuống các tệp một cách hiệu quả từ các URL.

Hãy bắt đầu xem xét thủ tục từng bước để tải xuống các tệp bằng URL bằng thư viện yêu cầu -

1. Nhập mô -đun

import requests

2. Nhận liên kết hoặc URL

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

3. Lưu nội dung với tên.

open('facebook.ico', 'wb').write(r.content)

Lưu tệp dưới dạng Facebook.ICO.

Thí dụ

import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)

Kết quả

Hướng dẫn python read file from request - python đọc tệp từ yêu cầu

Chúng ta có thể thấy tệp được tải xuống (biểu tượng) trong thư mục làm việc hiện tại của chúng tôi.

Nhưng chúng ta có thể cần tải xuống các loại tệp khác nhau như hình ảnh, văn bản, video, vv từ web. Vì vậy, trước tiên, hãy để có được loại dữ liệu mà URL đang liên kết đến−

>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png

Tuy nhiên, có một cách thông minh hơn, liên quan đến việc tìm kiếm các tiêu đề của một URL trước khi thực sự tải xuống nó. Điều này cho phép chúng tôi bỏ qua việc tải xuống các tệp mà người sói có nghĩa là sẽ được tải xuống.

>>> print(is_downloadable('https://www.youtube.com/watch?v=xCglV_dqFGI'))
False
>>> print(is_downloadable('https://www.facebook.com/favicon.ico'))
True

Để hạn chế tải xuống theo kích thước tệp, chúng tôi có thể lấy FileZie từ tiêu đề độ dài nội dung và sau đó thực hiện theo yêu cầu của chúng tôi.

contentLength = header.get('content-length', None)
if contentLength and contentLength > 2e8: # 200 mb approx
return False

Nhận tên tệp từ một url

Để có được tên tệp, chúng ta có thể phân tích URL. Dưới đây là một thói quen mẫu lấy chuỗi cuối cùng sau khi chao đảo (/).

url= "http://www.computersolution.tech/wp-content/uploads/2016/05/tutorialspoint-logo.png"
if url.find('/'):
print(url.rsplit('/', 1)[1]

Trên đây sẽ cung cấp tên tệp của URL. Tuy nhiên, có nhiều trường hợp thông tin tệp không có trong URL chẳng hạn - http://url.com/doad. Trong trường hợp như vậy, chúng ta cần phải có tiêu đề xử lý nội dung, chứa thông tin tên tệp.

import requests
import re

def getFilename_fromCd(cd):
"""
Get filename from content-disposition
"""
if not cd:
return None
fname = re.findall('filename=(.+)', cd)
if len(fname) == 0:
return None
return fname[0]


url = 'http://google.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
filename = getFilename_fromCd(r.headers.get('content-disposition'))
open(filename, 'wb').write(r.content)

Mã phân tích URL trên kết hợp với chương trình trên sẽ cung cấp cho bạn tên tệp từ tiêu đề xử lý nội dung hầu hết thời gian.

Hướng dẫn python read file from request - python đọc tệp từ yêu cầu

Cập nhật vào ngày 30 tháng 3 năm 2019 22:30:26

  • Câu hỏi và câu trả lời liên quan
  • Tải xuống tệp bằng trình kết nối SAP .NET
  • Làm thế nào các tệp được trích xuất từ ​​một tệp tar bằng Python?
  • Đổi tên nhiều tệp bằng Python
  • Sử dụng dịch vụ web SAP từ tệp WSDL
  • Web Scraping bằng Python và Scracy?
  • Python thực hiện quét web bằng LXML
  • Làm thế nào để sao chép các tệp từ thư mục này sang thư mục khác bằng Python?
  • Làm thế nào để sao chép các tệp từ máy chủ này sang máy chủ khác bằng Python?
  • Làm thế nào để chuyển đổi các tệp PDF sang các tệp Excel bằng Python?
  • Làm thế nào để sao chép một số tệp nhất định từ thư mục này sang thư mục khác bằng Python?
  • Thực hiện quét web bằng LXML trong Python?
  • HTML5 có cho phép bạn tương tác với các tệp máy khách cục bộ từ trong trình duyệt web không?
  • Tạo các tệp và thư mục tạm thời bằng cách sử dụng Python
  • Làm thế nào để xóa các tệp hoán đổi bằng Python?
  • Cách tạo các tệp PowerPoint bằng Python

Giới thiệu

Python được hỗ trợ bởi nhiều thư viện giúp đơn giản hóa việc truyền dữ liệu qua HTTP. Thư viện

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6 là một trong những gói Python phổ biến nhất vì nó được sử dụng rất nhiều trong việc quét web. Nó cũng phổ biến để tương tác với máy chủ! Thư viện giúp dễ dàng tải lên dữ liệu theo định dạng phổ biến như JSON, nhưng cũng giúp bạn dễ dàng tải lên các tệp.

Trong hướng dẫn này, chúng tôi sẽ xem xét cách tải lên các tệp bằng thư viện

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6 của Python. Bài viết sẽ bắt đầu bằng cách bao gồm thư viện
url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6 và chữ ký chức năng
url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
9. Tiếp theo, chúng tôi sẽ bao gồm cách tải lên một tệp bằng cách sử dụng gói
url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6. Cuối cùng nhưng không kém phần quan trọng, chúng tôi tải lên nhiều tệp trong một yêu cầu.

Tải lên một tệp duy nhất với thư viện yêu cầu của Python

Hướng dẫn này bao gồm cách gửi các tệp, chúng tôi không quan tâm đến cách chúng được tạo. Để làm theo, tạo ba tệp được gọi là

open('facebook.ico', 'wb').write(r.content)
1,
open('facebook.ico', 'wb').write(r.content)
2 và
open('facebook.ico', 'wb').write(r.content)
3.

Điều đầu tiên chúng tôi cần làm là cài đặt thư viện

open('facebook.ico', 'wb').write(r.content)
4 của chúng tôi trong không gian làm việc của chúng tôi. Mặc dù không cần thiết, bạn nên cài đặt thư viện trong môi trường ảo:

import requests
0

Kích hoạt môi trường ảo để chúng ta không còn tác động đến việc cài đặt Python toàn cầu:

import requests
1

Bây giờ chúng ta hãy cài đặt thư viện

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6 với
open('facebook.ico', 'wb').write(r.content)
6:

import requests
2

Tạo một tệp mới có tên

open('facebook.ico', 'wb').write(r.content)
7 sẽ lưu trữ mã của chúng tôi. Trong tệp đó, hãy bắt đầu bằng cách nhập thư viện
url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6:

import requests
3

Bây giờ chúng tôi đã thiết lập để tải lên một tập tin! Khi tải lên một tệp, chúng ta cần mở tệp và truyền phát nội dung. Rốt cuộc, chúng tôi không thể tải lên một tệp mà chúng tôi không có quyền truy cập. Chúng tôi sẽ làm điều này với chức năng

open('facebook.ico', 'wb').write(r.content)
9.

Hàm

open('facebook.ico', 'wb').write(r.content)
9 chấp nhận hai tham số: đường dẫn của tệp và chế độ. Đường dẫn của tệp có thể là một đường dẫn tuyệt đối hoặc đường dẫn tương đối đến nơi tập lệnh đang được chạy. Nếu bạn đang tải lên một tệp trong cùng một thư mục, bạn chỉ có thể sử dụng tên của tệp.

Đối số thứ hai, chế độ, sẽ lấy giá trị "đọc nhị phân" được biểu thị bằng

import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)
1. Đối số này nói với máy tính rằng chúng tôi muốn mở tệp ở chế độ đọc và chúng tôi muốn tiêu thụ dữ liệu của tệp ở định dạng nhị phân:

import requests
4

Lưu ý: Điều quan trọng là phải đọc tệp ở chế độ nhị phân. Thư viện

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6 thường xác định tiêu đề
import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)
3, là giá trị trong byte. Nếu tệp không được đọc trong chế độ byte, thư viện có thể nhận được giá trị không chính xác cho
import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)
3, điều này sẽ gây ra lỗi trong quá trình gửi tệp.
: it's important to read the file in binary mode. The
url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6 library typically determines the
import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)
3 header, which is a value in bytes. If the file is not read in bytes mode, the library may get an incorrect value for
import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)
3, which would cause errors during file submission.

Đối với hướng dẫn này, chúng tôi sẽ thực hiện các yêu cầu cho dịch vụ HTTPBIN miễn phí. API này cho phép các nhà phát triển kiểm tra các yêu cầu HTTP của họ. Hãy tạo một biến lưu trữ URL, chúng tôi sẽ đăng các tệp của chúng tôi lên:

import requests
5

Bây giờ chúng tôi có mọi thứ để đưa ra yêu cầu. Chúng tôi sẽ sử dụng phương thức

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
9 của thư viện
url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6 để tải lên tệp. Chúng tôi cần hai đối số để thực hiện công việc này: URL của thuộc tính máy chủ và
import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)
7. Chúng tôi cũng sẽ lưu phản hồi trong một biến, viết mã sau:

import requests
6

Tài sản

import requests


url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)

open('facebook.ico', 'wb').write(r.content)
7 có một từ điển. Khóa là tên của trường biểu mẫu chấp nhận tệp. Giá trị là byte của tệp đã mở mà bạn muốn tải lên.

Thông thường để kiểm tra xem phương thức

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
9 của bạn có thành công không, chúng tôi kiểm tra mã trạng thái HTTP của phản hồi. Chúng ta có thể sử dụng thuộc tính
>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png
0 của đối tượng phản hồi,
>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png
1. Nếu đó là sự thật, chúng tôi sẽ in ra phản hồi từ máy chủ HTTP, trong trường hợp này, nó sẽ lặp lại yêu cầu:

Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!

import requests
7

Hãy thử nó! Trong thiết bị đầu cuối, thực thi tập lệnh của bạn bằng lệnh

>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png
2:

import requests
8

Đầu ra của bạn sẽ tương tự như thế này:

import requests
9

Khi kiểm tra Sanity, bạn có thể xác minh giá trị

>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png
3 khớp với những gì trong tệp của bạn.

Tải lên nhiều tệp với thư viện yêu cầu của Python

Tải lên nhiều tệp bằng cách sử dụng các yêu cầu khá giống với một tệp duy nhất, với sự khác biệt chính là việc chúng tôi sử dụng danh sách. Tạo một tệp mới có tên

>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png
4 và mã thiết lập sau:

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
0

Bây giờ, hãy tạo một biến có tên là

>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png
5 đó là từ điển với nhiều tên và tệp:

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
1

Giống như trước đây, các khóa là tên của các trường biểu mẫu và các giá trị là các tệp trong byte.

Chúng tôi cũng có thể tạo các biến tệp của chúng tôi như một danh sách các bộ dữ liệu. Mỗi tuple chứa tên của trường biểu mẫu Chấp nhận tệp, theo sau là nội dung của tệp trong byte:

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
2

Hoặc là hoạt động nên chọn bất cứ thứ gì bạn thích!

Khi danh sách các tệp đã sẵn sàng, bạn có thể gửi yêu cầu và kiểm tra phản hồi của nó như trước:

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
3

Thực hiện tập lệnh này bằng lệnh

>>> r = requests.get(url, allow_redirects=True)
>>> print(r.headers.get('content-type'))
image/png
2:

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
4

Bạn sẽ thấy đầu ra này:

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
5

Làm tốt lắm! Bạn có thể tải lên một và nhiều tệp với

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6!

Sự kết luận

Trong bài viết này, chúng tôi đã học cách tải lên các tệp trong Python bằng thư viện

url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
6. Trong đó đó là một tệp hoặc nhiều tệp, chỉ cần một vài điều chỉnh với phương thức
url = 'https://www.facebook.com/favicon.ico'
r = requests.get(url, allow_redirects=True)
9. Chúng tôi cũng đã xác minh phản hồi của chúng tôi để đảm bảo rằng tải lên của chúng tôi đã thành công.

Làm thế nào để bạn đọc một tập tin trong Python?

Để đọc tệp văn bản bằng Python, bạn làm theo các bước sau: Đầu tiên, hãy mở tệp văn bản để đọc bằng cách sử dụng hàm open (). () Phương thức của đối tượng tệp. Thứ ba, đóng tệp bằng phương thức đóng tệp ().open a text file for reading by using the open() function. Second, read text from the text file using the file read() , readline() , or readlines() method of the file object. Third, close the file using the file close() method.

Làm cách nào để tải xuống một tệp với các yêu cầu?

Để tải xuống một tệp từ URL bằng Python, hãy làm theo ba bước sau:..
Cài đặt mô -đun yêu cầu và nhập nó vào dự án của bạn ..
Sử dụng yêu cầu.Nhận () để tải xuống dữ liệu đằng sau url đó ..
Viết tệp vào tệp trong hệ thống của bạn bằng cách gọi Open () ..

Làm cách nào để mở một tệp với Open in Python?

Python có hàm Open () tích hợp để mở tệp.Hàm này trả về một đối tượng tệp, còn được gọi là tay cầm, vì nó được sử dụng để đọc hoặc sửa đổi tệp cho phù hợp.Chúng tôi có thể chỉ định chế độ trong khi mở một tệp.... Mở tệp trong Python ..

Làm thế nào để bạn gửi một yêu cầu tệp trong Python?

Lưu ý tham số fileName = "file.txt".Điều này đặt ra một tên tệp và loại nội dung thay thế, để lại các tiêu đề tùy chọn.Nếu bạn có nghĩa là toàn bộ phần thân bài đăng được lấy từ một tệp (không có trường nào được chỉ định), thì không sử dụng tham số tệp, chỉ cần đăng tệp trực tiếp dưới dạng dữ liệu.filename="file. txt" parameter. This sets an alternative filename and content type, leaving out the optional headers. If you are meaning the whole POST body to be taken from a file (with no other fields specified), then don't use the files parameter, just post the file directly as data .