
Đặt tên file xuất theo quy tắc: mã chi tiết, revision, ngày và loại file
#Python#Quy ước#Xuất file1 lượt xem
Quản trị viênQuản trị· 0 điểm
Câu hỏi ·
Tên file lộn xộn là nguồn nhầm lẫn lớn. Gói quy tắc đặt tên vào một hàm: mã chi tiết, revision, ngày tháng, đuôi file, và dọn ký tự không hợp lệ.
Đặt tên file xuất theo quy tắcCác bước thực hiện
- Lấy mã chi tiết. Từ tên part hoặc thuộc tính.
- Lấy revision. Từ thuộc tính REV, mặc định A.
- Chuẩn hóa ký tự. Bỏ dấu, thay ký tự cấm bằng gạch dưới.
- Ghép tên. Mã_Rev_Ngày.đuôi.
- Tránh trùng. Thêm số thứ tự nếu file đã tồn tại.
Code tham khảo (Python)
import os import re import time import unicodedata import NXOpen def bo_dau(s): s = unicodedata.normalize("NFD", s) s = "".join(c for c in s if unicodedata.category(c) != "Mn") return s.replace("đ", "d").replace("Đ", "D") def lam_sach(s): s = bo_dau(s) s = re.sub(r"[^A-Za-z0-9._-]+", "_", s).strip("_") return s or "KHONG_TEN" def doc_thuoc_tinh(part, ten, mac_dinh=""): for a in part.GetUserAttributes(): if a.Title.upper() == ten: return a.StringValue return mac_dinh def ten_file_xuat(part, duoi, thu_muc): ma = lam_sach(doc_thuoc_tinh(part, "MA_CHI_TIET", os.path.splitext(part.Leaf)[0])) rev = lam_sach(doc_thuoc_tinh(part, "REV", "A")) ngay = time.strftime("%Y%m%d") goc = "%s_REV%s_%s" % (ma, rev, ngay) duong_dan = "%s/%s.%s" % (thu_muc.rstrip("/"), goc, duoi.lstrip(".")) i = 2 while os.path.exists(duong_dan): duong_dan = "%s/%s_%d.%s" % (thu_muc.rstrip("/"), goc, i, duoi.lstrip(".")) i += 1 return duong_dan def main(): session = NXOpen.Session.GetSession() lw = session.ListingWindow lw.Open() part = session.Parts.Work if part is None: return for duoi in ("stp", "pdf", "dxf"): lw.WriteLine("%-4s -> %s" % (duoi, ten_file_xuat(part, duoi, "D:/NXLab_xuat"))) if __name__ == "__main__": main()Giải thích code
unicodedata.normalize("NFD")tách dấu khỏi chữ, rồi bỏ các ký tự dấu (nhómMn), đổi riêng chữđ.- Biểu thức chính quy thay mọi ký tự ngoài chữ-số-gạch bằng dấu gạch dưới.
- Vòng
whilethêm hậu tố số thứ tự để không ghi đè file đã có.
Lỗi thường gặp
- Windows giới hạn 260 ký tự đường dẫn; giữ tên ngắn gọn.
- Revision trong thuộc tính có thể do người nhập; luôn làm sạch trước khi dùng trong tên file.
Code mang tính tham khảo, viết cho NX 12 trở lên (Python journal). Tên menu và một số lớp có thể khác theo phiên bản NX; hãy chạy thử trên bản sao của chi tiết trước khi dùng cho dữ liệu thật.
Điểm: 0
Trả lời
Đăng nhập để tham gia thảo luận.