Tôi đang làm việc để tạo một công thức python có đầu ra là "FileName_Run_MMDDYYYY" vì các tệp được chạy và chạy lại, tôi muốn có thể theo dõi thời điểm nó được chạy
Tôi biết cách lưu trữ chuỗi dưới dạng tên của tệp đầu ra, tôi chỉ không chắc cách tạo tệp đầu ra mới với tên cụ thể đó. Không làm cho tệp đầu ra trống được gọi là
UUID phiên bản 4 hỗ trợ nhiều bộ xác định loại. UUID sẽ giống nhau nếu bạn sử dụng nó hai lần trong cùng một chuỗi, nhưng khác nhau ở mỗi lần gọi upload_to có thể gọi được
Các bộ xác định loại cho phép bạn định dạng UUID theo nhiều cách khác nhau, chẳng hạn như. g. {uuid. x} sẽ cung cấp cho bạn một UUID thập lục phân
Các chỉ định loại được hỗ trợ là
sBiểu diễn chuỗi của UUID bao gồm dấu gạch ngang
iBiểu diễn số nguyên của UUID. Thích UUID. int
xBiểu diễn thập lục phân [Base16] của UUID. Thích UUID. lục giác
XBiểu diễn thập lục phân chữ hoa của UUID. Thích UUID. lục giác
cơ sở32Biểu diễn Base32 của UUID không có phần đệm
cơ sở64Biểu diễn Base64 của UUID không có phần đệm
Tất cả các chỉ định loại cũng hỗ trợ các độ chính xác để cắt chuỗi, e. g. {{uuid. 2base32}} sẽ chỉ trả về 2 ký tự đầu tiên của UUID được mã hóa Base32
loại specifiers
Bạn cũng có thể sử dụng một công cụ xác định loại sên đặc biệt để tạo chuỗi
Thí dụ
from django.db import models
from dynamic_filenames import FilePattern
upload_to_pattern = FilePattern[
filename_pattern='{app_label:.25}/{model_name:.30}/{instance.title:.40slug}{ext}'
]
class FileModel[models.Model]:
title = models.CharField[max_length=100]
my_file = models.FileField[upload_to=upload_to_pattern]
Trình xác định loại sên cũng hỗ trợ độ chính xác để cắt chuỗi. Trong ví dụ trên, sên của tiêu đề cá thể sẽ bị cắt ở 40 ký tự
Lưu ý rằng các dấu + được sử dụng để nối các thành phần khác nhau trong tên đường dẫn. Cũng lưu ý rằng biến [có màu xanh lục] không bao giờ được đặt trong dấu ngoặc kép [trong khi các phần không biến, có màu xanh lam và tím, nên được đặt trong dấu ngoặc kép]
Giả sử bạn có dữ liệu sau được lưu trữ trong tệp CSV. Và tên tệp CSV chứa ngày 27042019 [ngày này là biến của bạn], vì vậy tên tệp CSV đầy đủ là sales_27042019
productpricedatecomputer80027042019tablet25027042019printer10027042019Đây là mã để nhập tệp CSV có tên biến [lưu ý rằng bạn sẽ cần thay đổi tên đường dẫn để phản ánh vị trí lưu trữ tệp CSV trên máy tính của bạn]
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]
Lưu ý rằng bản thân mã chứa hàm nhập để cho phép bạn nhập ngày biến mong muốn trước khi nhập tệp của mình
Chạy mã trong Python
[1] Đầu tiên, hãy chạy mã bằng Python
[2] Sau đó, nhập ngày 27042019
[3] Cuối cùng, nhấn ENTER
Đây là kết quả mà bạn sẽ nhận được
product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
Giả sử vào ngày hôm sau, bạn nhận được một tệp CSV mới có ngày là 28 042019. Tên tệp CSV mới sẽ là. bán_ 28 042019.
productpricedatekeyboard12028042019monitor45028042019Trong trường hợp đó, hãy chạy lại mã Python, rồi nhập ngày 28042019 rồi nhấn ENTER
Bạn sẽ thấy kết quả ngày tiếp theo
product price date
0 keyboard 120 28042019
1 monitor 450 28042019
Phần kết luận
Bạn vừa xem cách nhập vào Python tệp CSV có tên biến. Trong hướng dẫn này, bạn đã sử dụng một biến ngày. Tuy nhiên, bạn có thể áp dụng cùng một khái niệm cho các loại biến khác nhau
Ngoài ra, các nguyên tắc tương tự sẽ áp dụng nếu bạn cố gắng nhập các loại tệp khác nhau, chẳng hạn như tệp Excel
Đối với điều này, chúng tôi sẽ sử dụng mô-đun DateTime. Đầu tiên, nhập mô-đun và sau đó lấy thời gian hiện tại với datetime. đối tượng now[]. Bây giờ hãy chuyển đổi nó thành một chuỗi và sau đó tạo một tệp với đối tượng tệp giống như một tệp thông thường được tạo bằng cách sử dụng các khái niệm xử lý tệp trong python
Trong bài viết này, chúng ta sẽ xem xét chương trình lấy tên tệp từ đường dẫn tệp đã cho trong ngôn ngữ lập trình Python. Đôi khi trong quá trình tự động hóa, chúng tôi có thể cần trích xuất tên tệp từ đường dẫn tệp.
Tốt hơn để có kiến thức về
- Mô-đun hệ điều hành Python
- Mô-đun đường dẫn Python
- biểu thức chính quy
- Được xây dựng trong rsplit[]
Phương pháp 1. Mô-đun hệ điều hành Python
Ví dụ 1. Lấy tên tệp từ đường dẫn mà không cần tách phần mở rộng[]
Hàm split[] của Python chia văn bản đã cho thành một danh sách các chuỗi bằng cách sử dụng dấu tách đã xác định và trả về danh sách các chuỗi đã được chia theo dấu tách được cung cấp
Python3
test.txt7
test.txt8
test.txt9
test.txt0
test.txt0
test.txt1
test.txt2
test.txt3
test.txt4
test.txt5
test.txt6
test.txt7
đầu ra
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]2
ví dụ 2. Lấy tên tệp từ đường dẫn tệp bằng os. đường dẫn. basename
Tên cơ sở trong đường dẫn đã cho có thể được lấy bằng cách sử dụng hàm Python tích hợp sẵn os. đường dẫn. basename[]. đường dẫn chức năng. basename[] chấp nhận một đối số đường dẫn và trả về tên cơ sở của đường dẫn tên đường dẫn
Python3
test.txt7
test.txt8
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]30
test.txt0
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]32
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]33
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]34
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]35
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]36
test.txt0
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]38
test.txt1____210
đầu ra
test.txt
ví dụ 3. Lấy tên tệp từ đường dẫn tệp bằng os. splitext
Phương pháp này sẽ kết thúc với một tệp và đó là một phần mở rộng nhưng nếu chúng ta chỉ cần tên tệp mà không có phần mở rộng hoặc chỉ các phần mở rộng thì sao. Đây là chức năng splitext trong mô-đun os đi vào hình ảnh. Phương thức này sẽ trả về một bộ chuỗi chứa tên tệp và văn bản và chúng ta có thể truy cập chúng với sự trợ giúp của việc lập chỉ mục
Thí dụ
Python3
test.txt7
test.txt8
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]30
test.txt0
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]32
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]36
test.txt0
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]38
product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
19 test.txt0
product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
81
test.txt1____283____219
product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
85 product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
86
test.txt1
product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
83______219 product price date
0 keyboard 120 28042019
1 monitor 450 28042019
70 product price date
0 keyboard 120 28042019
1 monitor 450 28042019
71 product price date
0 keyboard 120 28042019
1 monitor 450 28042019
72 product price date
0 keyboard 120 28042019
1 monitor 450 28042019
73 product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
19 product price date
0 keyboard 120 28042019
1 monitor 450 28042019
70test.txt6
test.txt7
đầu ra
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]3
Phương pháp 2. Lấy tên tệp từ đường dẫn tệp bằng Pathlib
Gói Pathlib Python cung cấp một số lớp mô tả đường dẫn hệ thống tệp với ngữ nghĩa phù hợp với nhiều hệ điều hành. Các mô-đun tiện ích tiêu chuẩn cho Python bao gồm mô-đun này. Mặc dù gốc là một trong những thuộc tính tiện ích cho phép trích xuất tên tệp từ liên kết mà không cần phần mở rộng nhưng nếu chúng tôi muốn có phần mở rộng với tệp, chúng tôi có thể sử dụng thuộc tính tên
Thí dụ
Python3
product price date
0 keyboard 120 28042019
1 monitor 450 28042019
78 product price date
0 keyboard 120 28042019
1 monitor 450 28042019
79____77 test.txt71
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]30
test.txt0
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]32
test.txt75
test.txt76
test.txt1
test.txt78
test.txt79
test.txt80
test.txt1
test.txt82
đầu ra
product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
1Phương pháp 3. Lấy tên tệp từ đường dẫn tệp bằng biểu thức chính quy
Chúng ta có thể sử dụng biểu thức chính quy để khớp tên tệp với mẫu cụ thể
product price date
0 computer 800 27042019
1 tablet 250 27042019
2 printer 100 27042019
8Mẫu này được chia thành 3 mẫu
- [\w] khớp với các từ bên trong tập hợp
- + ?
- [?=] khớp với tất cả các ký tự không có dòng mới và đảm bảo dừng tại
Thí dụ
Python3
test.txt7
test.txt84
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]30
test.txt0
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]32
test.txt88
test.txt0
test.txt90
test.txt91
test.txt92
test.txt0
test.txt94
test.txt95
test.txt1
test.txt97
đầu ra
product price date
0 keyboard 120 28042019
1 monitor 450 28042019
7Phương pháp 4. Sử dụng hàm tích hợp Python split[] để chia đường dẫn tệp thành danh sách các thành phần riêng lẻ, sau đó sử dụng phương thức rsplit[]
bạn có thể sử dụng hàm split[] tích hợp sẵn của Python để tách đường dẫn tệp thành danh sách các thành phần riêng lẻ, sau đó sử dụng phương thức rsplit[] để tách thành phần cuối cùng [phải là tên tệp và phần mở rộng] thành một danh sách . Sau đó, bạn có thể sử dụng lập chỉ mục để trích xuất tên tệp từ danh sách này
Đây là một ví dụ về cách điều này có thể được thực hiện
Python3
test.txt98
test.txt99
test.txt00
test.txt01
test.txt0
test.txt03
test.txt3
test.txt05
test.txt00
test.txt07
test.txt0
test.txt09
test.txt5
test.txt6
test.txt02
test.txt03
test.txt04
test.txt6
test.txt05
test.txt00
test.txt08
test.txt09
product price date
0 keyboard 120 28042019
1 monitor 450 28042019
71 product price date
0 keyboard 120 28042019
1 monitor 450 28042019
72
test.txt12
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]30
test.txt0
import pandas as pd x1 = str[input[]] path = r'C:\Users\Ron\Desktop\sales_' + x1 + '.csv' df = pd.read_csv[path] print[df]32
test.txt16
test.txt0
test.txt18
_______41____420____421
đầu ra. kiểm tra
Cách tiếp cận này trước tiên sử dụng hàm split[] để chia đường dẫn tệp thành danh sách các thành phần riêng lẻ, được phân tách bằng ký tự '/'. Sau đó, phương thức rsplit[] được sử dụng để tách thành phần cuối cùng [là tên tệp và phần mở rộng] thành một danh sách chứa tên tệp và phần mở rộng, sử dụng lệnh ‘. ’ làm dấu phân cách. Tên tệp sau đó được trích xuất từ danh sách này bằng cách lập chỉ mục. Cách tiếp cận này sẽ hoạt động với bất kỳ đường dẫn tệp và phần mở rộng nào, miễn là đường dẫn tệp ở định dạng có thể được phân tích cú pháp bằng các phương thức split[] và rsplit[]