Hướng dẫn how do i download and save a file in python? - làm cách nào để tải xuống và lưu tệp trong python?

Tôi mới đến Python và tôi đã trải qua câu hỏi và trả lời trên trang web này, để có câu trả lời cho câu hỏi của tôi. Tuy nhiên, tôi là người mới bắt đầu và tôi cảm thấy khó hiểu một số giải pháp. Tôi cần một giải pháp rất cơ bản.

Ai đó có thể vui lòng giải thích một giải pháp đơn giản để 'tải xuống tệp thông qua HTTP' và 'Lưu nó vào đĩa, trong Windows', cho tôi không?

Tôi cũng không chắc làm thế nào để sử dụng các mô -đun SHOTIL và HĐH.

Tệp tôi muốn tải xuống dưới 500 MB và là tệp lưu trữ .gz. Nếu ai đó có thể giải thích cách trích xuất kho lưu trữ và sử dụng các tệp trong đó, điều đó cũng rất tuyệt!

Đây là một giải pháp một phần mà tôi đã viết từ các câu trả lời khác nhau kết hợp:

import requests
import os
import shutil

global dump

def download_file[]:
    global dump
    url = "//randomsite.com/file.gz"
    file = requests.get[url, stream=True]
    dump = file.raw

def save_file[]:
    global dump
    location = os.path.abspath["D:\folder\file.gz"]
    with open["file.gz", 'wb'] as location:
        shutil.copyfileobj[dump, location]
    del dump

Ai đó có thể chỉ ra lỗi [cấp độ mới bắt đầu] và giải thích bất kỳ phương pháp nào dễ dàng hơn để thực hiện điều này?

Thanks!

Một python có thể được sử dụng để tải xuống một văn bản hoặc dữ liệu nhị phân từ URL bằng cách đọc phản hồi của urllib.request.urropen.

Dữ liệu được tải xuống có thể được lưu trữ dưới dạng biến và/hoặc lưu vào ổ đĩa cục bộ dưới dạng tệp.

Dưới đây bạn sẽ tìm thấy các ví dụ về đoạn mã Python để tải xuống các loại tệp khác nhau từ URL và lưu trữ chúng dưới dạng biến hoặc lưu cục bộ.

Mẹo thú vị: Cách đặt tiêu đề yêu cầu HTTP của Agent-Agent trong Python! Đọc thêm → How to set the ‘User-Agent’ HTTP request header in Python! Read More →

Dữ liệu văn bản

Sử dụng đoạn trích python sau đây để tải xuống trang web hoặc tệp văn bản từ URL, lưu nội dung của nó vào một biến và sau đó in nó:

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]

Đọc và giải mã:

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
1 trước tiên tải xuống dữ liệu ở định dạng nhị phân, sau đó
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
2 chuyển đổi nó thành một chuỗi.
The
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
1 first downloads the data in a binary format, then the
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
2 converts it to a string.

Nếu bạn cần lưu dữ liệu đã tải xuống dưới dạng tệp văn bản, bạn có thể thực hiện điều này như sau:

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]

Dữ liệu nhị phân

Để tải xuống một tệp nhị phân [ví dụ:

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
3,
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
4,
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
5] từ URL và lưu nó vào ổ đĩa cục bộ của bạn, hãy sử dụng mã Python, như sau:

from urllib.request import urlopen

url = "//www.shellhacks.com/file.pdf"
save_as = "file.pdf"

# Download from URL
with urlopen[url] as file:
    content = file.read[]

# Save to file
with open[save_as, 'wb'] as download:
    download.write[content]

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
6 có nghĩa là bạn đang mở tệp cho mục đích viết ở định dạng nhị phân.writing purposes in a binary format.

Nếu bạn không chọn chế độ nhị phân, bạn sẽ gặp lỗi này:

Traceback [most recent call last]:
  File "python-file-downloader.py", line 12, in 
    download.write[content]
TypeError: write[] argument must be str, not bytes

Mẹo thú vị: Cách tự động hóa đăng nhập vào một trang web bằng Selenium trong Python! Đọc thêm → How to automate login to a website using Selenium in Python! Read More →

Bạn có biết bạn có thể tải xuống một tệp được lập trình bằng Python không? Tôi sẽ chỉ cho bạn cách tìm nạp và lưu một tệp trong Python. Quá trình này được gọi là cạo web và là một bước thiết yếu của bất kỳ dự án liên quan đến dữ liệu nào.

Quét web là quá trình thu thập dữ liệu từ một trang web. Mặc dù nó có thể được thực hiện thủ công bởi người dùng, nhưng nó thường đề cập đến một phương thức thu thập dữ liệu tự động với sự trợ giúp của trình thu thập thông tin web.

Bạn có thể thực hiện tất cả các chương trình này trong Python. Đến cuối bài viết này, bạn sẽ biết cách tải xuống bất kỳ loại tệp nào trong Python, bao gồm PDFS, hình ảnh, video và trang. Quá trình này tương tự giữa các loại tệp khác nhau.

Để tận dụng tối đa bài viết này, thật tốt khi có một sự hiểu biết cơ bản về lập trình trong Python. Ngoài ra, để tiết kiệm thời gian và tăng tốc học tập của bạn, tôi khuyến khích bạn kiểm tra bản nhạc Python của chúng tôi.

Để tải xuống một tập tin trong Python, chúng ta cần lấy nó và lưu nó. Quá trình này có thể được thực hiện bằng cách gọi API hoặc chỉ với một URL web thông thường chỉ vào GIF bạn thích.

Trước khi đi xa hơn, hãy để hiểu API REST. API REST là một dịch vụ cho phép bạn truy cập và thao tác dữ liệu như tệp văn bản, hình ảnh, dịch vụ và bộ sưu tập các tài nguyên khác trên máy chủ thông qua các cơ chế REST. API giúp cải thiện tính di động của các ứng dụng khách hàng và giảm bớt quá trình phát triển của các thành phần khác nhau của sản phẩm. Các API này thường trả về các đối tượng JSON được mã hóa UTF-8 dưới dạng tài nguyên.

Có hai bước cơ bản để đưa ra yêu cầu khi làm việc với API REST. Đầu tiên, máy khách truy cập một vị trí cụ thể trên API REST và nêu phương thức sẽ được thực thi. Điều này được gọi là một yêu cầu. Thứ hai, máy chủ thực thi phương thức và trả lại dữ liệu cho máy khách. Điều này được gọi là một phản ứng.request. Second, the server executes the method and returns the data to the client. This is known as a response.

Xác thực là một thành phần quan trọng của bảo mật Internet. Bất kỳ API REST nào cho phép khách hàng truy cập hoặc sửa đổi dữ liệu nhạy cảm hoặc quan trọng phải có một hệ thống xác thực. Ngay cả khi API miễn phí, chủ sở hữu có thể giới thiệu xác thực để giới hạn số lượng yêu cầu cho mỗi người dùng.

Đối với hướng dẫn này, chúng tôi sẽ tìm nạp và lưu các tệp trong Python từ Place.dog và Randomfox.ca. Không cần xác thực, vì vậy bạn có thể sử dụng lại đoạn mã để tải xuống một tệp trong Python. Bạn có thể tìm thấy một danh sách các API công khai ở đây.

Đầu tiên, chúng tôi sẽ tải xuống một tệp trong Python qua HTTP. Sau đó, chúng tôi sẽ tải xuống một tệp trong Python từ API. Hãy để ngay với nó!

Tải xuống một tệp trong Python qua HTTP

Trong ví dụ đầu tiên của chúng tôi, chúng tôi sẽ tìm nạp và lưu một bức ảnh của một con chó. Trang web này cung cấp hình ảnh ngẫu nhiên về những con chó bạn có thể sử dụng làm người giữ chỗ cho dự án tiếp theo của bạn. Nếu bạn làm mới trang, nó sẽ tạo ra một bức tranh chó khác.

Chúng tôi sẽ sử dụng thư viện yêu cầu, giúp HTTP yêu cầu đơn giản hơn so với sử dụng thư viện

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
7 tích hợp. Bạn có thể phải cài đặt thư viện
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
8 với lệnh sau:

pip install requests

Sau đó, chúng tôi nhập

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
8, đặt biến
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
0 với URL mục tiêu của chúng tôi, viết yêu cầu
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
1 và kiểm tra trạng thái của nó. Sau đây là các loại trạng thái phản hồi khác nhau mà bạn có thể phải đối mặt khi viết yêu cầu
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
1:

  • Thông tin 1xx. Nó chỉ ra rằng một yêu cầu đã được nhận và khách hàng nên tiếp tục thực hiện các yêu cầu cho tải trọng dữ liệu.. It indicates that a request has been received and the client should continue to make requests for the data payload.
  • 2xx thành công. Nó chỉ ra một hành động được yêu cầu đã được nhận, hiểu và chấp nhận. Nó giúp bạn xác minh dữ liệu tồn tại trước khi làm việc trên nó.. It indicates a requested action has been received, understood, and accepted. It helps you verify the data exists before working on it.
  • Chuyển hướng 3xx. Nó cho biết khách hàng phải có hành động bổ sung để hoàn thành yêu cầu, chẳng hạn như sử dụng proxy hoặc điểm cuối khác để truy cập các tài nguyên.. It indicates the client must take additional action to complete the request, such as using a proxy or a different endpoint to access the resources.
  • Lỗi máy khách 4xx. Nó chỉ ra các vấn đề với khách hàng, ví dụ, các phương pháp không được phép, các vấn đề ủy quyền, truy cập bị cấm hoặc cố gắng truy cập các tài nguyên không tồn tại.. It indicates problems with the client, for example, disallowed methods, authorization issues, forbidden access, or attempts to access resources that do not exist.
  • Lỗi máy chủ 5xx. Nó chỉ ra các vấn đề với máy chủ cung cấp API.. It indicates problems with the server providing the API.

Hãy để viết một yêu cầu để tìm nạp một tập tin trong Python.

>>> import requests

>>> url = '//place.dog/300/200'

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

>>> # Get response status
>>> response.status_code
200

Mã trạng thái

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
3 cho biết yêu cầu thành công và dữ liệu tồn tại. Từ đó, chúng tôi tiếp tục bước tiếp theo và lưu một tệp trong Python với sự trợ giúp của phương thức
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
4.

The 200 status code indicates the request is successful and the data exists. From there, we continue to the next step and save a file in Python with the help of the write[] method.

Bây giờ, tập tin đã được lưu dưới dạng dog1.jpg và chứa một hình ảnh của một con chó.

Để được bồi dưỡng tốt trên phương thức write [] để lưu một tệp trong Python, hãy kiểm tra bài viết của tôi về cách ghi vào tệp trong Python tại đây.

Tải xuống một tệp trong Python từ API

Bây giờ, hãy khám phá cách tìm nạp và lưu một tệp trong Python bằng cách gọi API và phân tích tệp JSON. Trái ngược với những gì chúng tôi đã làm trước đây, chúng tôi sẽ lưu tệp với Pathlib.

Hầu hết các dữ liệu có sẵn trực tuyến đều ở dạng JSON [ký hiệu đối tượng JavaScript]. Nó được sử dụng để lưu trữ thông tin trong cơ sở dữ liệu và là loại dữ liệu phổ biến nhất mà bạn sẽ tìm thấy khi làm việc với các API REST hiện đại. Cấu trúc dữ liệu JSON có thể là các cặp giá trị tên không có thứ tự, chẳng hạn như từ điển, bảng băm, đối tượng hoặc danh sách khóa tùy thuộc vào ngôn ngữ lập trình hoặc danh sách các giá trị được đặt hàng như mảng, danh sách và vectơ.unordered name-value pairs, such as dictionaries, hash tables, objects, or keyed lists depending on the programming language, or an ordered list of values such as arrays, lists, and vectors.

JSON có thể khó khăn cho con người đọc và sử dụng trực tiếp. Python có các thư viện khác nhau để giúp chúng tôi đọc dữ liệu JSON được tìm nạp từ web để giải quyết vấn đề này. Trong số đó có thư viện JSON có hỗ trợ tích hợp để chuyển đổi các thành phần JSON thành các đối tượng Python gốc. Bảng sau đây cho thấy ánh xạ chuyển đổi giữa JSON và Python:

JsonPython
sự vậttừ điển
mảngDanh sách hoặc tuple
sợi dâysợi dây
con sốSố nguyên hoặc float
thậtĐÚNG VẬY
saiSai
vô giá trịKhông có

Bạn phải xử lý dữ liệu JSON thường xuyên khi làm việc với API REST. Bạn có thể tìm thêm thông tin về JSON trong khóa học của chúng tôi về cách đọc và viết các tệp JSON bằng Python.

Thư viện

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
8 có nhiều tính năng, nhưng chúng tôi chỉ cần yêu cầu
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
1 và định dạng
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
7 cho ví dụ sau. Như chúng tôi đã làm trước đây, bước đầu tiên là nhập thư viện yêu cầu. Sau đó, chúng tôi tạo một yêu cầu
from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"
save_as = "file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

# Save to file
with open[save_as, 'w'] as download:
    download.write[content]
1 cho điểm cuối API mà chúng tôi muốn truy cập. API cung cấp một đối tượng phản hồi bao gồm dữ liệu JSON. Chúng tôi chỉ quan tâm đến dữ liệu JSON, được trả về với mô -đun ____27.

>>> import requests

>>> url = "//randomfox.ca/floof"

>>> # fetch file
>>> response = requests.get[url, allow_redirects=True]

>>> # get json data
>>> json = response.json[]
>>> print[json]
{'image': '//randomfox.ca/images/2.jpg', 'link': '//randomfox.ca/?i=2'}

Đầu ra

from urllib.request import urlopen

url = "//www.shellhacks.com/file.pdf"
save_as = "file.pdf"

# Download from URL
with urlopen[url] as file:
    content = file.read[]

# Save to file
with open[save_as, 'wb'] as download:
    download.write[content]
0 tương tự như từ điển Python. Chúng tôi trích xuất URL của hình ảnh như sau:

>>> img = json['image']
>>> print[img]
//randomfox.ca/images/2.jpg

Tiếp theo, chúng tôi muốn lưu hình ảnh. Như đã đề cập trước đây, chúng tôi sử dụng

from urllib.request import urlopen

url = "//www.shellhacks.com/file.pdf"
save_as = "file.pdf"

# Download from URL
with urlopen[url] as file:
    content = file.read[]

# Save to file
with open[save_as, 'wb'] as download:
    download.write[content]
1, một khung hướng đối tượng để xử lý các đường dẫn hệ thống tập tin. Một trong những lợi thế của nó là tính di động tốt hơn giữa các hệ điều hành. Bạn có thể tìm thêm thông tin về
from urllib.request import urlopen

url = "//www.shellhacks.com/file.pdf"
save_as = "file.pdf"

# Download from URL
with urlopen[url] as file:
    content = file.read[]

# Save to file
with open[save_as, 'wb'] as download:
    download.write[content]
1 trong bài viết của tôi về cách đổi tên tệp.

Để lưu hình ảnh của Fox của chúng tôi, chúng tôi sẽ sử dụng phương thức path.write_bytes [dữ liệu] để mở đường dẫn trong chế độ nhị phân/byte và ghi dữ liệu vào nó.

from urllib.request import urlopen

url = "//www.shellhacks.com/file.csv"

# Download from URL
with urlopen[url] as file:
    content = file.read[].decode[]

print[content]
0

Tệp của chúng tôi hiện đã được lưu là

from urllib.request import urlopen

url = "//www.shellhacks.com/file.pdf"
save_as = "file.pdf"

# Download from URL
with urlopen[url] as file:
    content = file.read[]

# Save to file
with open[save_as, 'wb'] as download:
    download.write[content]
3. Chúng tôi chỉ thấy cách trích xuất URL trong phản hồi API bằng cách kiểm tra dữ liệu
from urllib.request import urlopen

url = "//www.shellhacks.com/file.pdf"
save_as = "file.pdf"

# Download from URL
with urlopen[url] as file:
    content = file.read[]

# Save to file
with open[save_as, 'wb'] as download:
    download.write[content]
0.

Đóng suy nghĩ về cách tải xuống một tập tin trong Python

Bây giờ chúng tôi đã học được cách tải xuống một tệp trong Python qua HTTP và từ API. Tôi khuyến khích bạn chơi với mã và tìm nạp các tệp từ các API khác nhau.

Có rất nhiều điều để tìm hiểu về JSON, đó là một định dạng rộng rãi và tiện dụng để lưu trữ dữ liệu. Bạn có thể tìm thấy thêm về nó và lập trình Python với bản nhạc Python của chúng tôi.

Cuối cùng nhưng không kém phần quan trọng, luôn luôn là một ý tưởng tốt để suy ngẫm về các kỹ năng lập trình Python của bạn. Để giúp bạn trong quá trình này, hãy xem bài viết của tôi về những thứ có thể giúp bạn viết mã Python tốt hơn và duyệt nội dung của chúng tôi trên Refeuenpython.com. Tiếp tục học hỏi mỗi ngày!

Làm cách nào để tải xuống một tập tin trong Python?

Để 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 để tạo nút tải xuống trong Python?

Việc triển khai nút tải xuống yêu cầu hai phần: Triển khai tiện ích nút Proto/Frontend để chấp nhận URL và tên tệp tải xuống và tải xuống URL được chỉ định.Thực hiện API ở phía Python để tạo nút.Implement the Proto/Frontend Button Widget to accept a download URL and file name and download the URL specified. Implementing the API on the Python side to create a button.

Làm cách nào để lưu và ghi vào một tệp trong Python?

Lưu tệp văn bản trong Python Mở tệp mới trong chế độ ghi sẽ tạo một tệp và sau khi đóng tệp, các tệp được lưu tự động.Tuy nhiên, chúng tôi cũng có thể viết một số văn bản vào tệp.Python cung cấp hai phương pháp cho cùng một.Write []: Chèn chuỗi str1 trong một dòng trong tệp văn bản.Opening a new file in write mode will create a file and after closing the file, the files get saved automatically. However, we can also write some text to the file. Python provides two methods for the same. write[]: Inserts the string str1 in a single line in the text file.

Làm cách nào để lưu một tệp văn bản trong Python?

Với việc ghi vào tệp Python, bạn có thể tạo một tệp .text [Guru99.txt] bằng cách sử dụng mã, chúng tôi đã trình diễn ở đây:..
Bước 1] Mở tệp .txt f = Mở ["Guru99.txt", "W+"] ....
Bước 2] Nhập dữ liệu vào tệp cho I trong phạm vi [10]: f.write ["Đây là dòng % d \ r \ n" % [i+1]] ....
Bước 3] Đóng phiên bản tệp f.close [].

Bài Viết Liên Quan

Chủ Đề