Python sắp xếp tệp theo ngày trong tên tệp

Chào các Coder. Trong hướng dẫn Python này, chúng ta sẽ tìm hiểu cách lấy danh sách tên tệp được sắp xếp của một thư mục hoặc thư mục dựa trên ngày và giờ tạo trong Python

Hãy thảo luận về một số mô-đun cần nhập cho hướng dẫn này

dirpath = '/Users/CodeSpeedy/Desktop/Pyfile/' #intialize the path with your own system's directory/file path
0. Mô-đun này cung cấp các chức năng khác nhau để thao tác hoặc thay đổi các phần khác nhau của môi trường thời gian chạy Python. Nó cũng cung cấp quyền truy cập vào một số biến được trình thông dịch sử dụng

dirpath = '/Users/CodeSpeedy/Desktop/Pyfile/' #intialize the path with your own system's directory/file path
1. Mô-đun này có các chức năng khác nhau để tương tác với hệ điều hành hệ thống. Nó cung cấp một cách di động để sử dụng chức năng phụ thuộc vào hệ điều hành. 'os' và 'os. đường dẫn' mô-đun là một số ví dụ về mô-đun chứa các chức năng hữu ích khác nhau để tương tác với hệ thống tệp

dirpath = '/Users/CodeSpeedy/Desktop/Pyfile/' #intialize the path with your own system's directory/file path
0. Mô-đun thời gian được sử dụng để xử lý mọi hoạt động liên quan đến thời gian

dirpath = '/Users/CodeSpeedy/Desktop/Pyfile/' #intialize the path with your own system's directory/file path
1. Mô-đun stat xác định các hàm và hằng số khác nhau để diễn giải kết quả của các mô-đun
dirpath = '/Users/CodeSpeedy/Desktop/Pyfile/' #intialize the path with your own system's directory/file path
1 khác nhau

Chương trình lấy tên của các tệp được sắp xếp theo ngày tạo trong Python

Bước 1. Nhập tất cả các mô-đun và macro cần thiết cho chương trình Python này bằng cách nhập

import sys, os, time
from stat import S_ISREG, ST_CTIME, ST_MODE
#S_ISREG used for the  interpretation  of the values in a stat-struct
#ST_CTIME used to represent metadata changes on Unix and creation time on Windows that occurred recently.
#ST_MODE contains the file type and mode.

 

Bước 2. Khai báo biến lưu đường dẫn thư mục/tệp tin

dirpath = '/Users/CodeSpeedy/Desktop/Pyfile/' #intialize the path with your own system's directory/file path

 

Bước 3. Lấy danh sách tất cả các mục nhập tệp của thư mục đã cho

FiEnt = [os.path.join[dirpath, file_name] for file_name in os.listdir[dirpath]]

 

Bước 4. Lấy số liệu thống kê của các mục nhập tập tin

FiEnt = [[os.stat[path], path] for path in FiEnt]

 

Bước5. Chèn ngày tạo bằng cách chỉ để lại các tệp thông thường

FiEnt = [[stat[ST_CTIME], path]
         for stat, path in FiEnt if S_ISREG[stat[ST_MODE]]]

 

Bước 6. Cuối cùng, in tên tệp đã sắp xếp trên màn hình đầu ra

for cdate, path in sorted[FiEnt]:
    print[time.ctime[cdate], os.path.basename[path]]

 

Đây là chương trình Python hoàn chỉnh

________số 8

đầu ra

Mon Oct 4 19:13:14 2021 tcl86t.lib
Mon Oct 4 19:13:14 2021 tclConfig.sh
Mon Oct 4 19:13:14 2021 tclooConfig.sh
Mon Oct 4 19:13:14 2021 tclstub86.lib
Mon Oct 4 19:13:14 2021 tk86t.lib
Mon Oct 4 19:13:14 2021 tkstub86.lib

Hy vọng bài viết này đã giúp ích cho bạn trong việc tìm hiểu cách lấy tên tệp được sắp xếp từ bất kỳ thư mục nào theo ngày tạo trong Python

Ghi chú. Trong tệp, Hello_Hi_2015-02-20T084521_1424543480. hắc ín. gz --> 2015-02-20T084521 đại diện là "năm-tháng-ngàyTHHMMSS" [Dựa trên điều này tôi muốn sắp xếp]

Nhập tệp bên dưới

file_list = ['Xin chào_Hi_2015-02-20T084521_1424543480. hắc ín. gz',
'Xin chào_Hi_2015-02-20T095845_1424543481. hắc ín. gz',
'Hello_Hi_2015-02-20T095926_1424543481. hắc ín. gz',
'Hello_Hi_2015-02-20T100025_1424543482. hắc ín. gz',
'Hello_Hi_2015-02-20T111631_1424543483. hắc ín. gz',
'Hello_Hi_2015-02-20T111718_1424543483. hắc ín. gz',
'Hello_Hi_2015-02-20T112502_1424543483. hắc ín. gz',
'Hello_Hi_2015-02-20T112633_1424543484. hắc ín. gz',
'Hello_Hi_2015-02-20T113427_1424543484. hắc ín. gz',
'Hello_Hi_2015-02-20T113456_1424543484. hắc ín. gz',
'Hello_Hi_2015-02-20T113608_1424543484. hắc ín. gz',
'Hello_Hi_2015-02-20T113659_1424543485. hắc ín. gz',
'Hello_Hi_2015-02-20T113809_1424543485. hắc ín. gz',
'Hello_Hi_2015-02-20T113901_1424543485. hắc ín. gz',
'Xin chào_Hi_2015-02-20T113955_1424543485. hắc ín. gz',
'Hello_Hi_2015-03-20T114122_1424543485. hắc ín. gz',
'Hello_Hi_2015-02-20T114532_1424543486. hắc ín. gz',
'Hello_Hi_2015-02-20T120045_1424543487. hắc ín. gz',
'Hello_Hi_2015-02-20T120146_1424543487. hắc ín. gz',
'Xin chào_WR_2015-02-20T084709_1424543480. hắc ín. gz',
'Hello_WR_2015-02-20T113016_1424543486. hắc ín. gz']

Đầu ra phải là

file_list = ['Xin chào_Hi_2015-02-20T084521_1424543480. hắc ín. gz',
'Xin chào_WR_2015-02-20T084709_1424543480. hắc ín. gz',
'Xin chào_Hi_2015-02-20T095845_1424543481. hắc ín. gz',
'Xin chào_Hi_2015-02-20T095926_1424543481. hắc ín. gz',
'Hello_Hi_2015-02-20T100025_1424543482. hắc ín. gz',
'Hello_Hi_2015-02-20T111631_1424543483. hắc ín. gz',
'Hello_Hi_2015-02-20T111718_1424543483. hắc ín. gz',
'Hello_Hi_2015-02-20T112502_1424543483. hắc ín. gz',
'Hello_Hi_2015-02-20T112633_1424543484. hắc ín. gz',
'Xin chào_WR_2015-02-20T113016_1424543486. hắc ín. gz',
'Hello_Hi_2015-02-20T113427_1424543484. hắc ín. gz',
'Hello_Hi_2015-02-20T113456_1424543484. hắc ín. gz',
'Hello_Hi_2015-02-20T113608_1424543484. hắc ín. gz',
'Hello_Hi_2015-02-20T113659_1424543485. hắc ín. gz',
'Xin chào_Hi_2015-02-20T113809_1424543485. hắc ín. gz',
'Hello_Hi_2015-02-20T113901_1424543485. hắc ín. gz',
'Hello_Hi_2015-02-20T113955_1424543485. hắc ín. gz',
'Hello_Hi_2015-02-20T114532_1424543486. hắc ín. gz',
'Hello_Hi_2015-02-20T120045_1424543487. hắc ín. gz',
'Hello_Hi_2015-02-20T120146_1424543487. hắc ín. gz',
'Hello_Hi_2015-03-20T114122_1424543485. hắc ín. gz']
Dưới đây là mã mà tôi đã thử.

  1. def sắp xếp[ dir ]
  2. hệ điều hành. chdir[ dir ]
  3. file_list = toàn cầu. toàn cầu ['Xin chào _ *']
  4. file_list. sắp xếp [key=os. con đường. getmtime]
  5. in["\n". tham gia [file_list]]
  6. quay lại 0

Cảm ơn trước

7 aug '15 #1

Đây là giải pháp biểu thức chính quy.

  1. nhập lại
  2. mẫu = lại. biên dịch [r"^\D+?_\D+?_[. +?]_"]
  3. def sort_on_TS[a, b]
  4. trả về cmp[mẫu. phù hợp [a]. nhóm[1], mẫu. trận đấu[b]. nhóm 1]]
  5. cho mục trong được sắp xếp [file_list, sort_on_TS]
  6. in mục

Phương thức này sử dụng phương thức chuỗi tách.

  1. def sort_on_TS[a,b].
  2. trả về cmp[a. tách["_"][2], b. tách["_"][2]]

Còn nhiều dòng để viết, nhưng bạn cũng có thể sử dụng chỉ mục phương thức chuỗi.

  1. def sort_on_TS[a,b].
  2. idx1 = a. chỉ mục["_", a. chỉ mục["_"]+1]
  3. idx2 = a. chỉ mục["_", idx1+1]
  4. idx11 = b. chỉ mục["_", b. chỉ mục["_"]+1]
  5. idx22 = b. chỉ mục["_", idx11+1]
  6. trả về cmp[a[idx1. idx2+1], b[idx11. idx22+1]]


2

7210

Đây là giải pháp biểu thức chính quy.

  1. nhập lại
  2. mẫu = lại. biên dịch [r"^\D+?_\D+?_[. +?]_"]
  3. def sort_on_TS[a, b]
  4. trả về cmp[mẫu. phù hợp [a]. nhóm[1], mẫu. trận đấu[b]. nhóm 1]]
  5. cho mục trong được sắp xếp [file_list, sort_on_TS]
  6. in mục

Phương thức này sử dụng phương thức chuỗi tách.

  1. def sort_on_TS[a,b].
  2. trả về cmp[a. tách["_"][2], b. tách["_"][2]]

Còn nhiều dòng để viết, nhưng bạn cũng có thể sử dụng chỉ mục phương thức chuỗi.

  1. def sort_on_TS[a,b].
  2. idx1 = a. chỉ mục["_", a. chỉ mục["_"]+1]
  3. idx2 = a. chỉ mục["_", idx1+1]
  4. idx11 = b. chỉ mục["_", b. chỉ mục["_"]+1]
  5. idx22 = b. chỉ mục["_", idx11+1]
  6. trả về cmp[a[idx1. idx2+1], b[idx11. idx22+1]]

7 aug '15 #2

@bvdet. giải pháp tuyệt vời. Cám ơn rất nhiều

8 aug '15 #3

Đăng trả lời của bạn

Đăng nhập để đăng câu trả lời của bạn hoặc Đăng ký một tài khoản miễn phí

Chủ Đề