Python mở tên tệp động

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à

s

Biểu diễn chuỗi của UUID bao gồm dấu gạch ngang

i

Biểu diễn số nguyên của UUID. Thích UUID. int

x

Biểu diễn thập lục phân [Base16] của UUID. Thích UUID. lục giác

X

Biểu diễn thập lục phân chữ hoa của UUID. Thích UUID. lục giác

cơ sở32

Biểu diễn Base32 của UUID không có phần đệm

cơ sở64

Biể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.

productpricedatekeyboard12028042019monitor45028042019

Trong 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.txt
7
test.txt
8

test.txt
9
test.txt
0
test.txt
0

test.txt
1
test.txt
2
test.txt
3
test.txt
4
test.txt
5
test.txt
6
test.txt
7

đầ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.txt
7
test.txt
8

 

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.txt
0
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.txt
0
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.txt
1____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.txt
7
test.txt
8

 

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.txt
0
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.txt
0
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.txt
0
    product  price      date
0  computer    800  27042019
1    tablet    250  27042019
2   printer    100  27042019
81

 

test.txt
1____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.txt
1
    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
70
test.txt
6
test.txt
7

đầ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.txt
71

 

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.txt
0
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.txt
75

test.txt
76

test.txt
1
test.txt
78

 

test.txt
79

test.txt
80

test.txt
1
test.txt
82

đầu ra

    product  price      date
0  computer    800  27042019
1    tablet    250  27042019
2   printer    100  27042019
1

Phươ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
8

Mẫ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.txt
7
test.txt
84

 

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.txt
0
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.txt
88
test.txt
0
test.txt
90

 

test.txt
91

test.txt
92
test.txt
0
test.txt
94

 

test.txt
95

test.txt
1
test.txt
97

đầu ra

    product  price      date
0  keyboard    120  28042019
1   monitor    450  28042019
7

Phươ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.txt
98
test.txt
99

test.txt
00
test.txt
01
test.txt
0
test.txt
03
test.txt
3
test.txt
05

test.txt
00
test.txt
07
test.txt
0
test.txt
09
test.txt
5
test.txt
6
test.txt
02
test.txt
03
test.txt
04
test.txt
6
test.txt
05

test.txt
00
test.txt
08
test.txt
09
    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.txt
12

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.txt
0
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.txt
16
test.txt
0
test.txt
18

_______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[]

Tên tệp động là gì?

Sử dụng hỗ trợ tên tệp động để chỉ định mẫu tên tệp thay vì tên tệp thực tế . Một số chương trình ứng dụng tạo tên tệp đầu ra có thể thay đổi. Tên thay đổi dựa trên các tiêu chí cụ thể như ngày, tháng, năm hiện tại hoặc tên tệp bao gồm số thứ tự tăng dần.

Làm cách nào chúng tôi có thể lấy kích thước của tệp có tên xyz txt bằng mô-đun os?

Mô-đun python os có hàm stat[] nơi chúng ta có thể chuyển tên tệp làm đối số. Hàm này trả về cấu trúc tuple chứa thông tin tệp. Sau đó, chúng ta có thể lấy thuộc tính st_size của nó để lấy kích thước tệp theo byte

Hàm nào mở tệp và trả về một xử lý tệp?

Bây giờ, hãy thử mở dữ liệu từ tệp này bằng hàm open[]. . Các chế độ khác nhau để mở tệp trong Python

Chủ Đề