Hướng dẫn dùng python shutil python

Nội dung chính

  • Copy nội dung file trong python | shutil.copyfile
  • Copy nội dung file kèm Permission trong python | shutil.copy
  • Copy toàn bộ file trong thư mục | shutil.copytree
  • Tổng kết và thực hành

Hướng dẫn cách copy file trong python. Bạn sẽ học được các cách sao chép file trong python như copy nội dung file, copy nội dung file kèm quyền truy cập, copy nội dung file kèm quyền truy cập và metadata. Bạn cũng sẽ học được cách sử dụng các chức năng copy tương ứng của module shutil như shutil.copyfile, shutil.copy, shutil.copy2 và shutil.copytree sau bài học này.

Chúng ta có thể sử dụng các chức năng copy sau đây trong module shutil để copy file trong python:

HàmCú phápChức năng
shutil.copyfile copyfile(src, dst) Copy nội dung một file
shutil.copy copy(src, dst) Copy nội dung một file kèm quyền truy cập
shutil.copy2 copy2(src, dst) Copy nội dung một file kèm Permission và Metadata
shutil.copytree copytree(src, dst) Copy toàn bộ file trong một thư mục

Trong đó:

  • src là viết tắt của source - nguồn sao chép
  • dst là viết tắt của destination - đích sao chép
  • Permission là quyền truy cập vào file
  • Metadata là siêu dữ liệu - dữ liệu để mô tả file như là thời gian tạo, thời gian sửa đổi và các thông tin khác.

Copy nội dung file trong python | shutil.copyfile

Để copy nội dung file trong python, chúng ta sử dụng shutil.copyfile với cú pháp sau đây:

import shutil

shutil.copyfile( src , dst )

Trong đó:

  • src là đường dẫn của file nguồn, ví dụ như D:\test\a.txt
  • dst là đường dẫn của file đích, ví dụ như D:\data\b.txt

Ví dụ, chúng ta có một thư mục như sau:

  |
  |--dir1
  |  |
  |  |--sample.txt
  |
  |--dir2
  |
  |--copyfile_sample.py

Chúng ta sẽ copy nội dung file sample.txt bằng file copyfile_sample.py với cách viết như sau:

import shutil


shutil.copyfile('./dir1/sample.txt','./dir1/sample_copy1.txt')


shutil.copyfile('./dir1/sample.txt','./dir2/sample_copy2.txt')

Kết quả, file sample.txt được phục chế và lưu lại với tên sample_copy1.txt' trong cùng thư mục dir1, và sample_copy2.txt trong một thư mục khác dir2 như sau:

  |
  |--dir1
  |  |
  |  |--sample.txt
  |  |--sample_copy1.txt
  |
  |--dir2
  |  |--sample_copy2.txt
  |
  |--copyfile_sample.py

Sau khi copy file, một file mới với nội dung giống với file nguồn nhưng khác quyền truy cập, thời gian tạo, thời gian sửa đổi v.vv khác với file ban đầu sẽ được tạo ra. Bạn có thể kiểm tra bằng cách nhấn chuột phải vào file, chọn Properties và so sánh thông tin giữa hai file.

Copy nội dung file kèm Permission trong python | shutil.copy

Với shutil.copyfile chúng ta chỉ có thể copy nội dung file. Để copy nội dung file kèm cả Permission - quyền hạn truy cập file trong python, chúng ta sử dụng shutil.copy với cú pháp sau đây:

import shutil

shutil.copy( src , dst )

Trong đó:

  • src là đường dẫn của file nguồn, ví dụ như D:\test\a.txt
  • dst là đường dẫn của file hoặc thư mục đích, ví dụ như D:\data\b.txt hoặc D:\data. Nếu dst là đường dẫn file thì file nguồn sẽ được sao chép thành file mới với tên được chỉ định. Nếu dst là một thư mục thì file nguồn sẽ được sao chép thành file mới cùng tên.

Ví dụ, để sao chép file cùng tên, chúng ta có thể dùng một trong hai cách viết sau:

import shutil

shutil.copy('./file01.txt', './sample')

shutil.copy('./file01.txt', './sample/file01.txt')

Và để sao chép file với một tên khác:

import shutil

shutil.copy('./file01.txt', './sample/file02.txt')

Sau khi copy file, một file mới với nội dung và quyền truy cập giống với file nguồn nhưng khác thời gian tạo, thời gian sửa đổi v.vv . Bạn có thể kiểm tra bằng cách nhấn chuột phải vào file, chọn Properties và so sánh thông tin giữa hai file.

Lưu ý rằng shutil.copy giúp chúng ta sao chép dữ liệu và quyền của tệp, nhưng lại không sao chép metadata-dữ liệu để mô tả file như là thời gian tạo, thời gian sửa đổi và các thông tin khác.
Để copy nội dung file kèm Permission và Metadata trong python, chúng ta cần dùng tới shutil.copy2 với cú pháp sau đây:

import shutil

shutil.copy2( src , dst )

Trong đó, cũng giống như với shutil.copy:

  • src là đường dẫn của file nguồn, ví dụ như D:\test\a.txt
  • dst là đường dẫn của file hoặc thư mục đích, ví dụ như D:\data\b.txt hoặc D:\data. Nếu dst là đường dẫn file thì file nguồn sẽ được sao chép thành file mới với tên được chỉ định. Nếu dst là một thư mục thì file nguồn sẽ được sao chép thành file mới cùng tên.

Cách sử dụng shutil.copy2 cũng tương tự shutil.copy như ví dụ sau:

import shutil


shutil.copy2('./file01.txt', './sample/file01.txt')

shutil.copy2('./file01.txt', './sample')


shutil.copy2('./file01.txt', './sample/file03.txt')

Sau khi copy file, một file mới với nội dung, quyền truy cập, thời gian tạo, thời gian sửa đổi và các thông tin khác giống với file nguồn sẽ được tạo ra. Bạn có thể kiểm tra bằng cách nhấn chuột phải vào file, chọn Properties và so sánh thông tin giữa hai file.

Copy toàn bộ file trong thư mục | shutil.copytree

Ở phần trên chúng ta đã biết cách sử dụng 3 chức năng copy để copy một file trong python.
Lưu ý rằng bạn không thể chỉ định đối số src trong ba chức năng ở trên bằng thư mục, để copy thư mục trong python, vì lỗi sẽ xảy ra như sau:

shutil.copy('./sample', './sample_02')

Traceback (most recent call last):
File "", line 1, in
File "/home/anaconda3/envs/python3.7/lib/python3.7/shutil.py", line 245, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/home/anaconda3/envs/python3.7/lib/python3.7/shutil.py", line 120, in copyfile
with open(src, 'rb') as fsrc:
IsADirectoryError: [Errno 21] Is a directory: './sample'

Nếu bạn muốn copy toàn bộ file trong thư mục, hãy sử dụng tới shutil.copytree với cú pháp sau đây:

import shutil

shutil.copytree( src , dst )

Trong đó

  • src là đường dẫn của thư mục nguồn, ví dụ như D:\sample
  • dst là đường dẫn của thư mục đích, ví dụ như D:\sample_backup.

Nếu thư mục đích không tồn tại, thư mục đích sẽ được tạo ra và sau đó toàn bộ file trong thư mục nguồn sẽ được copy sang thư mục đích.

import shutil

shutil.copytree('./sample', './sample_backup')

Tuy nhiên nếu như thư mục đích đó đã tồn tại, lỗi FileExistsError sẽ bị trả về:

Traceback (most recent call last):
File "check.py", line 3, in
shutil.copytree('./sample', './sample_backup')
File "\home\anaconda3\Anaconda3\lib\shutil.py", line 554, in copytree
return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
File "\home\anaconda3\Anaconda3\lib\shutil.py", line 455, in _copytree
os.makedirs(dst, exist_ok=dirs_exist_ok)
File "\home\anaconda3\Anaconda3\lib\os.py", line 223, in makedirs
mkdir(name, mode)
FileExistsError: [WinError 183] Cannot create a file when that file already exists: './sample_backup'

Tổng kết và thực hành

Trên đây Kiyoshi đã hướng dẫn bạn về cách copy file trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" rel="license noopener" target="_blank" href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creativecommons</a>&nbsp;và <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" target="_blank" rel="noopener" href="https://www.dmca.com/Protection/Status.aspx?ID=1631afcd-7c4a-467d-8016-402c5073e5cd" class="dmca-badge">DMCA</a><script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js"></script></p><h3 style="font-size:15px">Bài viết liên quan</h3><ul class="popular-posts"><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/cach-doi-ten-file-trong-python/" title="Đổi tên file trong Python" rel="bookmark">Đổi tên file trong Python</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/di-chuyen-file-trong-python/" title="Cách di chuyển file trong python" rel="bookmark">Cách di chuyển file trong python</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/doc-file-trong-python/" title="Đọc file trong python" rel="bookmark">Đọc file trong python</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/kiem-tra-ton-tai-cua-file-thu-muc-trong-python/" title="Kiểm tra tồn tại của file và thư mục trong python" rel="bookmark">Kiểm tra tồn tại của file và thư mục trong python</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/lay-danh-sach-ten-file-va-thu-muc-trong-python/" title="Lấy danh sách tên file và thư mục trong python" rel="bookmark">Lấy danh sách tên file và thư mục trong python</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/lay-danh-sach-ten-file-va-thu-muc-theo-dieu-kien-trong-python/" title="Lấy danh sách tên file và thư mục theo điều kiện trong python" rel="bookmark">Lấy danh sách tên file và thư mục theo điều kiện trong python</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/doi-ten-thu-muc-trong-python/" title="Cách đổi tên thư mục trong python" rel="bookmark">Cách đổi tên thư mục trong python</a></h3></div></li><li class="popular-posts-item"><div class="popular-posts-title"><h3><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/lay-kich-thuoc-file-va-thu-muc-trong-python/" title="Lấy kích thước file và thư mục trong python" rel="bookmark">Lấy kích thước file và thư mục trong python</a></h3></div></li></ul></div><div id="keugoi"><span>Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!</span></div><section class="icon-bar-2" style="border-bottom:dotted grey .3px!important"><a target="_blank" title="chia sẻ qua facebook" rel="noopener noreferrer" href="https://www.facebook.com/sharer/sharer.php?u=https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/copy-file-trong-python/" class="facebook"><i class="fa fa-facebook"></i></a> <a target="_blank" rel="noopener noreferrer" href="https://twitter.com/intent/tweet?url=https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/copy-file-trong-python/" title="chia sẻ qua twitter" class="twitter"><i class="fa fa-twitter"></i></a> <a target="_blank" rel="noopener noreferrer" href="https://getpocket.com/edit?url=https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/copy-file-trong-python/" title="chia sẻ qua pocket" class="pocket"><i class="fa fa-get-pocket"></i></a> <span class="zalo-share-button" title="chia sẻ qua zalo" style="margin-left:18px;margin-bottom:-3px" data-href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/copy-file-trong-python/" data-oaid="579745863508352884" data-layout="3" data-color="blue" data-customize="false"></span></section><p class="ico-folder"><a target="_blank" href="https://laptrinhcanban.com/"><span itemprop="HOME">HOME</span></a><span class="sya"></span>&gt;&gt; <a target="_blank" class="article-category-link" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/">python cơ bản - lập trình python cho người mới bắt đầu</a>&gt;&gt;<a target="_blank" class="article-category-link" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/">16. xử lý file trong python</a></p><nav id="article-nav"><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/tao-va-luu-file-trong-thu-muc-moi-bang-python/" id="article-nav-older" class="article-nav-link-wrap" style="float:left;text-align:right;padding-right:20px"><strong class="article-nav-caption">Bài sau</strong><div class="article-nav-title">Tạo và lưu file trong thư mục mới bằng python</div></a><a target="_blank" href="https://laptrinhcanban.com/python/nhap-mon-lap-trinh-python/xu-ly-file-trong-python/cach-doi-ten-file-trong-python/" id="article-nav-newer" class="article-nav-link-wrap" style="float:right;text-align:left;padding-left:20px"><strong class="article-nav-caption">Bài tiếp</strong><div class="article-nav-title">Đổi tên file trong Python</div></a><span id="ezoic-pub-ad-placeholder-611" class="ezoic-adpicker-ad"></span></nav><div id="recent_posts_down"><div class="widget_athemes_tabs"><ul id="widget-tab" class="clearfix widget-tab-nav"><li class="active">Bài viết mới nhất</li></ul><div class="widget"><ul><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/lam-tron-so-trong-javascript/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban46.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/lam-tron-so-trong-javascript/">Làm tròn số trong JavaScript (Math.round, Math.ceil, Math.floor)</a></span> <span>tháng 7 1, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/so-mu-trong-javascript/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban45.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/so-mu-trong-javascript/">Số mũ trong JavaScript (Math.pow, Math.exp)</a></span> <span>tháng 7 1, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/math-max-math-min-trong-javascript/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban44.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/math-max-math-min-trong-javascript/">Math.max và Math.min trong JavaScript</a></span> <span>tháng 7 1, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/math-random-trong-javascript/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban43.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/math-object-trong-javascript/math-random-trong-javascript/">Math.random trong JavaScript</a></span> <span>tháng 7 1, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/throw-trong-javascript/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban42.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/throw-trong-javascript/">throw trong JavaScript và cách trả về ngoại lệ tuỳ ý</a></span> <span>tháng 7 1, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/cac-ngoai-le-trong-javascript-va-cach-xu-ly/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban41.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/cac-ngoai-le-trong-javascript-va-cach-xu-ly/">Các ngoại lệ trong JavaScript và cách xử lý tương ứng</a></span> <span>tháng 7 1, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/try-catch-trong-javascript/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban40.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/try-catch-trong-javascript/">try...catch trong JavaScript và cách xử lý ngoại lệ</a></span> <span>tháng 7 1, 2022</span></div></li><li class="clearfix"><div class="widget-entry-thumbnail"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/xu-ly-ngoai-le-cua-ham-xu-ly-mo-ta-trong-khoi-try/"><img width="60px" height="60px" class="ezlazyload attachment-thumb-small size-thumb-small wp-post-image" alt="" ezimgfmt="rs rscb2 src ng ngcb2" data-ezsrc="/css/images/thumbnail_img/laptrinhcanban39.webp"></a></div><div class="widget-entry-summary"><span style="margin:0"><a target="_blank" href="https://laptrinhcanban.com/javascript/javascript-co-ban-den-nang-cao/xu-ly-ngoai-le-trong-javascript/xu-ly-ngoai-le-cua-ham-xu-ly-mo-ta-trong-khoi-try/">Xử lý ngoại lệ của hàm xử lý mô tả trong khối try</a></span> <span>tháng 7 1, 2022</span></div></li></ul></div></div></div><footer class="entry-meta entry-footer"></footer><hr class="entry-footer-hr"></div><span class="ezoic-autoinsert-ad ezoic-longest_content"></span><div id="profiletitle2">Profile</div><div id="profileblock2"><div id="profilephoto2"><a target="_blank" rel="noopener" href="https://www.facebook.com/mr.nchita"><img width="100" height="100" alt="きよしです!笑" ezimgfmt="rs rscb2 src ng ngcb2" class="ezlazyload" data-ezsrc="/css/images/kiyoshi.webp"></a></div><div id="profiletext2"><p>Tác giả : <a href="https://www.facebook.com/mr.nchita" target="_blank" rel="nofollow noopener">Kiyoshi (Chis Thanh)</a></p><p>Kiyoshi là một <a href="https://www.youtube.com/c/ChisThanh" target="_blank" rel="nofollow noopener">cựu du học sinh tại Nhật Bản</a>. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.<span id="ezoic-pub-ad-placeholder-196" class="ezoic-adpicker-ad"></span></p></div></div></div></article><aside id="sidebar"><div id="sidebar_first"><span class="ezoic-autoinsert-ad ezoic-sidebar"></span><div class="search" style="margin-top:-30px"><div id="fb-root"></div><script async defer crossorigin="anonymous" src="https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v12.0&appId=3084959888222500&autoLogAppEvents=1" nonce="KPkvxeh4"></script><div class="fb-page" style="margin-left:30px" data-href="https://www.facebook.com/laptrinhkiyoshi" data-width="380" data-hide-cover="false" data-show-facepile="false"></div><script async src="https://cse.google.com/cse.js?cx=8a4ac28a22903209e"></script><div class="gcse-search"></div></div><span id="ezoic-pub-ad-placeholder-145"></span><span class="ezoic-ad ezoic-at-0 box-1 box-1145 adtester-container adtester-container-145 ezoic-ad-adaptive" data-ez-name="laptrinhcanban_com-box-1"><span class="ezoic-ad box-1 box-1-multi-145 adtester-container adtester-container-145" data-ez-name="laptrinhcanban_com-box-1"><span id="div-gpt-ad-laptrinhcanban_com-box-1-0" ezaw="300" ezah="262" style="position:relative;z-index:0;display:inline-block;padding:0;min-height:262px;min-width:300px" class="ezoic-ad"><script data-ezscrex="false" data-cfasync="false" type="text/javascript" style="display:none">var cid = '2352922017'; var pid = 'ca-pub-3861801553502992'; var slotId = 'div-gpt-ad-laptrinhcanban_com-box-1-0'; var ffid = 1; var alS = 1000 % 1000; var container = document.getElementById(slotId); var ins = document.createElement('ins'); ins.id = slotId + '-asloaded'; ins.className = 'adsbygoogle ezasloaded'; ins.dataset.adClient = pid; ins.dataset.adChannel = cid; ins.style.display = 'block'; ins.style.width = container.offsetWidth + 'px'; ins.style.height = container.offsetHeight + 'px'; container.style.maxHeight = container.style.minHeight + 'px'; container.style.maxWidth = container.style.minWidth + 'px'; container.appendChild(ins); (adsbygoogle = window.adsbygoogle || []).push({}); window.ezoSTPixelAdd(slotId, 'stat_source_id', 44); window.ezoSTPixelAdd(slotId, 'adsensetype', 1); var lo = new MutationObserver(window.ezaslEvent); lo.observe(document.getElementById(slotId + '-asloaded'), { attributes: true });</script></span></span><span class="ezoic-ad box-1 box-1-multi-145 adtester-container adtester-container-145" data-ez-name="laptrinhcanban_com-box-1"><span id="div-gpt-ad-laptrinhcanban_com-box-1-0_1" ezaw="300" ezah="262" style="position:relative;z-index:0;display:inline-block;padding:0;min-height:262px;min-width:300px" class="ezoic-ad"><script data-ezscrex="false" data-cfasync="false" type="text/javascript" style="display:none">var cid = '2352922017'; var pid = 'ca-pub-3861801553502992'; var slotId = 'div-gpt-ad-laptrinhcanban_com-box-1-0_1'; var ffid = 1; var alS = 1000 % 1000; var container = document.getElementById(slotId); var ins = document.createElement('ins'); ins.id = slotId + '-asloaded'; ins.className = 'adsbygoogle ezasloaded'; ins.dataset.adClient = pid; ins.dataset.adChannel = cid; ins.style.display = 'block'; ins.style.width = container.offsetWidth + 'px'; ins.style.height = container.offsetHeight + 'px'; container.style.maxHeight = container.style.minHeight + 'px'; container.style.maxWidth = container.style.minWidth + 'px'; container.appendChild(ins); (adsbygoogle = window.adsbygoogle || []).push({}); window.ezoSTPixelAdd(slotId, 'stat_source_id', 44); window.ezoSTPixelAdd(slotId, 'adsensetype', 1); var lo = new MutationObserver(window.ezaslEvent); lo.observe(document.getElementById(slotId + '-asloaded'), { attributes: true });</script></span></span><span class="ezoic-ad box-1 box-1-multi-145 adtester-container adtester-container-145" data-ez-name="laptrinhcanban_com-box-1"><span id="div-gpt-ad-laptrinhcanban_com-box-1-0_2" ezaw="300" ezah="262" style="position:relative;z-index:0;display:inline-block;padding:0;min-height:262px;min-width:300px" class="ezoic-ad"><script data-ezscrex="false" data-cfasync="false" type="text/javascript" style="display:none">var cid = '2352922017'; var pid = 'ca-pub-3861801553502992'; var slotId = 'div-gpt-ad-laptrinhcanban_com-box-1-0_2'; var ffid = 1; var alS = 1000 % 1000; var container = document.getElementById(slotId); var ins = document.createElement('ins'); ins.id = slotId + '-asloaded'; ins.className = 'adsbygoogle ezasloaded'; ins.dataset.adClient = pid; ins.dataset.adChannel = cid; ins.style.display = 'block'; ins.style.width = container.offsetWidth + 'px'; ins.style.height = container.offsetHeight + 'px'; container.style.maxHeight = container.style.minHeight + 'px'; container.style.maxWidth = container.style.minWidth + 'px'; container.appendChild(ins); (adsbygoogle = window.adsbygoogle || []).push({}); window.ezoSTPixelAdd(slotId, 'stat_source_id', 44); window.ezoSTPixelAdd(slotId, 'adsensetype', 1); var lo = new MutationObserver(window.ezaslEvent); lo.observe(document.getElementById(slotId + '-asloaded'), { attributes: true });</script></span></span><span class="ezoic-ad box-1 box-1-multi-145 adtester-container adtester-container-145" data-ez-name="laptrinhcanban_com-box-1"><span id="div-gpt-ad-laptrinhcanban_com-box-1-0_3" ezaw="300" ezah="262" style="position:relative;z-index:0;display:inline-block;padding:0;min-height:262px;min-width:300px" class="ezoic-ad"><script data-ezscrex="false" data-cfasync="false" type="text/javascript" style="display:none">var cid = '2352922017'; var pid = 'ca-pub-3861801553502992'; var slotId = 'div-gpt-ad-laptrinhcanban_com-box-1-0_3'; var ffid = 1; var alS = 1000 % 1000; var container = document.getElementById(slotId); var ins = document.createElement('ins'); ins.id = slotId + '-asloaded'; ins.className = 'adsbygoogle ezasloaded'; ins.dataset.adClient = pid; ins.dataset.adChannel = cid; ins.style.display = 'block'; ins.style.width = container.offsetWidth + 'px'; ins.style.height = container.offsetHeight + 'px'; container.style.maxHeight = container.style.minHeight + 'px'; container.style.maxWidth = container.style.minWidth + 'px'; container.appendChild(ins); (adsbygoogle = window.adsbygoogle || []).push({}); window.ezoSTPixelAdd(slotId, 'stat_source_id', 44); window.ezoSTPixelAdd(slotId, 'adsensetype', 1); var lo = new MutationObserver(window.ezaslEvent); lo.observe(document.getElementById(slotId + '-asloaded'), { attributes: true });</script></span></span><style> .box-1-multi-145{border:none!important;display:inline-block;float:none !important;line-height:0px;margin-bottom:3px!important;margin-left:0px!important;margin-right:0px!important;margin-top:3px!important;max-width:100%!important;min-height:250px;min-width:300px;padding:0;}

Hướng dẫn dùng python shutil python
report this ad

Chủ đề

Hướng dẫn dùng python shutil python
report this ad


Nội dung
Hướng dẫn dùng python shutil python
report this ad