Tôi đã học python được khoảng 3 tuần, và tôi hiện đang cố gắng viết một kịch bản nhỏ để sắp xếp các tệp (khoảng 10.000) theo từ khóa và ngày xuất hiện trong tên tệp. Các tệp trước một ngày nhất định phải được thêm vào một tệp lưu trữ. Việc phân loại hoạt động tốt, nhưng không phải là lưu trữPython: Đưa tệp vào lưu trữ không có thư mục?
Nó tạo lưu trữ - tên là tốt - nhưng trong lưu trữ là đường dẫn đầy đủ đến tệp. Nếu tôi mở nó, có vẻ như: folder1 -> folder2 -> folder3 -> files
.
Làm cách nào để thay đổi tệp lưu trữ sao cho tệp lưu trữ chỉ chứa các tệp chứ không phải toàn bộ cấu trúc?
Dưới đây là một đoạn với chức năng zip của tôi, node
là con đường mà các tập tin đã trước khi phân loại, folder
là một thư mục con với các tập tin được sắp xếp theo một từ khóa trong tên, items
là các thư mục với các tập tin được sắp xếp theo ngày.
Tôi đang sử dụng Python 2,6
def ZipFolder(node, zipdate):
xynode = node + '/xy'
yznode = node + '/yz'
for folder in [xynode,yznode]:
items = os.listdir(folder)
for item in items:
itemdate = re.findall('(?<=_)\d\d\d\d-\d\d', item)
print item
if itemdate[0] <= zipdate:
arcname = str(item) + '.zip'
x = zipfile.ZipFile(folder + '/' + arcname, mode='w', compression = zipfile.ZIP_DEFLATED)
files = os.listdir(folder + '/' + item)
for f in files:
x.write(folder + '/' + item + '/' + f)
print 'writing ' + str(folder + '/' + item + '/' + f) + ' in ' + str(item)
x.close()
shutil.rmtree(folder + '/' + item)
return
Tôi cũng mở cửa cho bất cứ đề nghị và cải tiến.
Không phải là nhận xét nhưng docstring. Giải thích chức năng làm gì và nó có ích gì, không phải cách thức hoạt động và docstring hữu ích nhất cho điều đó. –
tuyệt vời nó hoạt động, thx cho sự giúp đỡ nhanh chóng. – rny
@Jan Hudec: với docstring bạn có nghĩa là sth như thế này: def ZipFolder (nút, zipdate): "" "nén tệp cũ hơn 'zipdate' trong các thư mục con của 'nút'" "" – rny