Hướng dẫn how do you take file path as input in python? - làm thế nào để bạn lấy đường dẫn tệp làm đầu vào trong python?

Dưới đây là đoạn mã mà tôi đang cố gắng sử dụng để đi theo đường dẫn thư mục làm "đầu vào thô" từ người dùng. Tôi nhận được lỗi sau khi đầu vào được lấy từ người dùng:

Traceback [most recent call last]:
  File "C:\Users\larece.johnson\Desktop\Python Programs\Hello World 2", line 14, in 
    f = open[str,"r+"]                                     #I open the text file here which the user gave me
IOError: [Errno 2] No such file or directory: 'C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01'

Bỏ qua những gì tôi đã làm dưới đây, có một cách cụ thể nào tôi phải đi theo con đường từ người dùng để Python chấp nhận nó không?

Ví dụ: thư mục và tệp tôi đang tìm kiếm là

C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]

  1. Làm thế nào để
  2. Python làm thế nào
  3. Đặt đường dẫn tệp trong Python

Được tạo ra: Tháng 9 đến 12, 2021 | Cập nhật: Tháng 10 năm 02, 2021

  1. Sử dụng ký tự
    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    4 để chỉ định đường dẫn tệp trong Python
  2. Sử dụng các chữ cái thô để chỉ định đường dẫn tệp trong Python
  3. Sử dụng chức năng
    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    5 để chỉ định đường dẫn tệp trong Python
  4. Sử dụng chức năng
    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    6 để chỉ định đường dẫn tệp trong Python

Hầu hết chúng tôi được cung cấp với biến đường dẫn mặc định khi chúng tôi cài đặt Python. Nhưng đôi khi, chúng ta phải đặt các biến này theo cách thủ công hoặc nếu chúng ta muốn đặt một đường dẫn khác, chúng ta phải thực hiện nó bằng tay. Để chạy các tệp được lưu trong các thư mục của chúng tôi, chúng tôi phải cung cấp đường dẫn hoàn chỉnh cho trình soạn thảo.

Một đường dẫn thường là một chuỗi như

import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
7. Nhưng trong Python, nhân vật
import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
4 có thể được hiểu là nhân vật thoát.

Hướng dẫn này sẽ thảo luận về cách đặt đường dẫn cho một tệp trong Python trên các thiết bị Windows.

Sử dụng ký tự
import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
4 để chỉ định đường dẫn tệp trong Python

Sử dụng các chữ cái thô để chỉ định đường dẫn tệp trong Python

Sử dụng chức năng

import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
5 để chỉ định đường dẫn tệp trong Python

'C:\\Directory\\File'

Sử dụng các chữ cái thô để chỉ định đường dẫn tệp trong Python

Sử dụng chức năng

import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
5 để chỉ định đường dẫn tệp trong Python

Sử dụng chức năng

import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
6 để chỉ định đường dẫn tệp trong Python

Hầu hết chúng tôi được cung cấp với biến đường dẫn mặc định khi chúng tôi cài đặt Python. Nhưng đôi khi, chúng ta phải đặt các biến này theo cách thủ công hoặc nếu chúng ta muốn đặt một đường dẫn khác, chúng ta phải thực hiện nó bằng tay. Để chạy các tệp được lưu trong các thư mục của chúng tôi, chúng tôi phải cung cấp đường dẫn hoàn chỉnh cho trình soạn thảo.

r'C:\Directory'

Sử dụng chức năng
import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
5 để chỉ định đường dẫn tệp trong Python

Sử dụng chức năng

import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
6 để chỉ định đường dẫn tệp trong Python

Hầu hết chúng tôi được cung cấp với biến đường dẫn mặc định khi chúng tôi cài đặt Python. Nhưng đôi khi, chúng ta phải đặt các biến này theo cách thủ công hoặc nếu chúng ta muốn đặt một đường dẫn khác, chúng ta phải thực hiện nó bằng tay. Để chạy các tệp được lưu trong các thư mục của chúng tôi, chúng tôi phải cung cấp đường dẫn hoàn chỉnh cho trình soạn thảo.

Một đường dẫn thường là một chuỗi như

import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
7. Nhưng trong Python, nhân vật
import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
4 có thể được hiểu là nhân vật thoát.

import os
print[os.path.join['C:',os.sep, 'Users']]

Output:

C:\Users

Hướng dẫn này sẽ thảo luận về cách đặt đường dẫn cho một tệp trong Python trên các thiết bị Windows.

Sử dụng chức năng
import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
6 để chỉ định đường dẫn tệp trong Python

Hầu hết chúng tôi được cung cấp với biến đường dẫn mặc định khi chúng tôi cài đặt Python. Nhưng đôi khi, chúng ta phải đặt các biến này theo cách thủ công hoặc nếu chúng ta muốn đặt một đường dẫn khác, chúng ta phải thực hiện nó bằng tay. Để chạy các tệp được lưu trong các thư mục của chúng tôi, chúng tôi phải cung cấp đường dẫn hoàn chỉnh cho trình soạn thảo.

Một đường dẫn thường là một chuỗi như

import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
7. Nhưng trong Python, nhân vật
import re     #this library is used so that I can use the "search" function
import os     #this is needed for using directory paths and manipulating them 

str =""       #initializing string variable for raw data input

#print os.getcwd[]
#f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]

str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me

f = open[str,"r+"]
4 có thể được hiểu là nhân vật thoát.

from pathlib import Path
print[Path['C:', '/', 'Users']]

Output:

C:\Users

Hướng dẫn này sẽ thảo luận về cách đặt đường dẫn cho một tệp trong Python trên các thiết bị Windows.

  • Chúng ta có thể sử dụng ký tự
    'C:\\Directory\\File'
    
    0 thay cho một
    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    4 để cung cấp đường dẫn trong Python.
  • Cú pháp cho điều này được hiển thị dưới đây.
  • Nhận thư mục từ đường dẫn trong Python
  • Vấn đề: Liệt kê các thư mục và ổ đĩa

    Gần đây trong khi làm việc trong một dự án, một đồng nghiệp đã hỏi liệu người ta có thể liệt kê nội dung của các ổ đĩa trong Python hay không. Tất nhiên bạn có thể. Hơn nữa, vì đây hoàn toàn là phức tạp, nên tôi đã muốn đưa ra trường hợp này để minh họa các thực tiễn tốt nhất được đề xuất để làm việc với các đường dẫn trên các ổ đĩa.

    Bước 1: Làm thế nào để tôi nhập đúng đường dẫn?

    Giả sử rằng bạn muốn có được danh sách một đường dẫn cụ thể một cách chính xác, chúng tôi bắt đầu bằng cách chọn thư mục người dùng trên hệ thống Windows 10, về cơ bản là một ví dụ có thể tái tạo:

    path_dir: str = "C:\Users\sselt\Documents\blog_demo"

    Các biến được gán khi thực hiện ngay lập tức gây ra lỗi:

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    0

    Trình thông dịch không hiểu trình tự ký tự \ u, vì điều này bắt đầu các ký tự Unicode của một chuỗi tương tự. Vấn đề này phát sinh do hệ thống Windows sử dụng dấu gạch chéo ngược \ \ làm một dấu phân cách đường dẫn và Linux sử dụng dấu gạch chéo/. Thật không may, vì dấu phân cách Windows cũng là người khởi xướng cho các nhân vật đặc biệt khác nhau hoặc Escape in Unicode, nên rõ ràng nó gây nhầm lẫn mọi thứ. Giống như chúng tôi không mong đợi bất kỳ sự gắn kết nào sớm trong việc sử dụng các dấu phân cách thập phân ở nhiều quốc gia khác nhau, lựa chọn duy nhất của chúng tôi là đi cho một trong ba giải pháp.

    Giải pháp 1 - Biến thể gớm ghiếc

    Chỉ cần tránh phân tách Windows và thay vào đó chỉ viết đường dẫn bằng cách sử dụng Linux DECEATORS:

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    1

    Trình thông dịch sau đó nhận ra đường dẫn chính xác, tin rằng nó là một hệ thống Linux để bắt đầu.

    Giải pháp 2 - Biến thể thậm chí còn gớm ghiếc hơn

    Sử dụng trình tự thoát.

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    2

    Điều làm phiền tôi bên cạnh sự bất hợp pháp của điều này là người ta không sử dụng trình tự thoát ở mọi sự kết hợp của người tập hợp nhân vật, chỉ trước khi U U và và Bu Biêu.

    Giải pháp 3 - Một cái thanh lịch

    Sử dụng các chuỗi RAW với các loại R R R như một tiền tố để chỉ ra rằng các ký tự đặc biệt không nên được đánh giá.

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    3

    Bước 2: Quét các tệp

    Quay lại nhiệm vụ của chúng tôi muốn liệt kê tất cả các yếu tố trong một thư mục. Chúng tôi đã biết con đường.

    Lệnh đơn giản OS.ListDir liệt kê tất cả các chuỗi, tức là, chỉ có tên tệp đường dẫn. Ở đây và trong tất cả các ví dụ khác, tôi sử dụng loại gợi ý cho tài liệu mã bổ sung. Cú pháp này có sẵn từ Python 3.5 trở đi.

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    4

    Tệp là ổn, nhưng tôi quan tâm nhiều hơn đến số liệu thống kê tệp, mà chúng tôi có OS.stat.

    Bước 3: Đường dẫn catenating

    Để chuyển đường dẫn tệp, trước tiên chúng ta phải kết hợp tên tệp và đường dẫn. Tôi thường thấy các cấu trúc sau đây trong tự nhiên, và thậm chí sử dụng chúng khi bắt đầu. Ví dụ:

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    5

    A và B là gớm ghiếc, bởi vì chúng catenate các chuỗi với dấu hiệu++ - không cần thiết trong Python.

    B đặc biệt gớm ghiếc, bởi vì người ta cần một thiết bị phân tách kép trong Windows hoặc nó sẽ được đánh giá là một chuỗi thoát cho dấu ngoặc kép đóng. & NBSP;

    C và D có phần tốt hơn, vì họ sử dụng định dạng chuỗi, nhưng chúng vẫn không giải quyết được vấn đề phụ thuộc vào hệ thống. Nếu tôi áp dụng kết quả trong Windows, tôi sẽ nhận được một đường dẫn chức năng, nhưng không nhất quán với hỗn hợp các dấu phân cách.

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    6

    Một giải pháp độc lập với hệ điều hành

    Một giải pháp từ Python là OS.SEP hoặc OS.Path.Sep. Cả hai trả về bộ tách đường dẫn của hệ thống tương ứng. Chúng có chức năng giống hệt nhau, nhưng cú pháp thứ hai, rõ ràng hơn ngay lập tức cho thấy dấu phân cách liên quan.

    Điều này có nghĩa là, người ta có thể viết:

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    7

    Kết quả là tốt hơn, nhưng với chi phí của một mã phức tạp, nếu bạn kết hợp một số phân đoạn đường dẫn.

    Do đó, quy ước là kết hợp các yếu tố đường dẫn thông qua quá trình caten chuỗi. Điều này thậm chí còn ngắn hơn và chung chung hơn:

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    8

    Chạy đầy đủ đầu tiên

    Hãy cùng đi đến thư mục:

    C:/Users/larece.johnson/Desktop/Python Programs/BostonLog.log.2014-04-01
    
    9
    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    0

    Một trong những kết quả [không được hiển thị] là st_atime, lần cuối cùng được truy cập, st_mtime cho sửa đổi cuối cùng và st_ctime cho thời gian tạo. Ngoài ra, st_size cung cấp kích thước tệp trong byte. Hiện tại, tất cả những gì tôi muốn biết là kích thước và ngày sửa đổi cuối cùng, và vì vậy tôi chọn lưu một định dạng danh sách đơn giản.

    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    1

    Chức năng cuối cùng với đệ quy

    Kết quả kết quả có vẻ thỏa đáng lúc đầu, nhưng hai vấn đề mới phát sinh. ListDir không phân biệt giữa các tệp và thư mục, chỉ địa chỉ cấp thư mục và không xử lý các thư mục con. Do đó, chúng ta cần một hàm đệ quy phân biệt giữa các tệp và thư mục. os.path.isdir kiểm tra cho chúng tôi xem có thư mục bên dưới đường dẫn hay không.

    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    2

    Làm cho kết quả hữu ích như một khung dữ liệu

    Xong! Chúng tôi đã giải quyết vấn đề trong ít hơn 10 dòng. Vì tôi đã lên kế hoạch để FileSurvey làm danh sách các bộ dữ liệu, tôi có thể dễ dàng chuyển kết quả vào khung dữ liệu Panda và phân tích nó ở đó để tính tổng số được lưu trong các thư mục, v.v.

    import re     #this library is used so that I can use the "search" function
    import os     #this is needed for using directory paths and manipulating them 
    
    str =""       #initializing string variable for raw data input
    
    #print os.getcwd[]
    #f = open["C:/Users/larece.johnson/Desktop/BostonLog.log.2014-04-02.log","r+"]
    
    str = raw_input["Enter the name of your text file - please use / backslash when typing in directory path: "];  #User will enter the name of text file for me
    
    f = open[str,"r+"]
    
    3

    ... nhưng thật không may, nó không phải là cách thực hành tốt nhất

    Tôi biết, blog hứa hẹn sẽ giải quyết vấn đề bằng cách sử dụng các thực tiễn tốt nhất.

    Một vài năm trước, blog của tôi sẽ kiếm được một số danh tiếng, nhưng mặc dù Python vẫn được phát triển, nhưng nó có thể cải thiện ngay cả những trường hợp sử dụng đơn giản như vậy.

    Trong phần tiếp theo, tôi sẽ giải quyết lại trường hợp sử dụng này và giải quyết nó một cách thanh lịch.

    Đọc ở đây phần thứ hai của bài viết trên blog.

    Làm thế nào để bạn lấy đầu vào tên tệp trong Python?

    inputFileName = input ["Nhập tên của tệp đầu vào:"] Biến [Tệp là khóa bị khóa để viết]. 1. Open the file and associate the file with a file variable [file is “locked” for writing].

    Làm thế nào để bạn tạo một đầu vào từ một tệp 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 [].

    Làm thế nào để bạn gán một đường dẫn đến một biến trong Python?

    Đường dẫn sẽ được đặt để thực hiện các chương trình Python ...
    Nhấp chuột phải vào máy tính của tôi và nhấp vào các thuộc tính ..
    Nhấp vào cài đặt hệ thống nâng cao ..
    Nhấp vào tab biến môi trường ..
    Nhấp vào tab mới của các biến người dùng ..
    Viết đường dẫn trong tên biến ..
    Sao chép đường dẫn của thư mục Python ..
    Paste Path of Python trong giá trị biến đổi ..

    Bài Viết Liên Quan

    Chủ Đề