python - لغة - منتديات بايثون




كيف يمكنني نسخ الملفات مع ملحق ملف معين إلى مجلد في بيثون(الإصدار 2.5) البرنامج النصي؟ (4)

أريد نسخ الملفات التي تحتوي على امتداد ملف معين إلى مجلد جديد. لدي فكرة كيفية استخدام os.walk ولكن على وجه التحديد كيف أذهب حول استخدام ذلك؟ أنا أبحث عن الملفات مع ملحق ملف معين في مجلد واحد فقط (هذا المجلد يحتوي على 2 الدلائل الفرعية ولكن الملفات التي أبحث عنها لن تكون موجودة في هذه الدلائل الفرعية 2 لذلك أنا لست بحاجة إلى البحث في هذه الدلائل الفرعية) . شكرا مقدما.


هذا سوف يسير شجرة مع الدلائل الفرعية. يمكنك إجراء فحص os.path.isfile لجعله أكثر أمنا قليلا.

for root, dirs, files in os.walk(srcDir):
    for file in files:
        if file[-4:].lower() == '.jpg':
            shutil.copy(os.path.join(root, file), os.path.join(dest, file))

إذا كنت لا يتكرر، لا تحتاج المشي ().

الجواب فيديريكو مع الكرة على ما يرام، على افتراض أنك لن يكون لديك أي أدلة تسمى 'شيء. وإلا حاول:

import os, shutil

for basename in os.listdir(srcdir):
    if basename.endswith('.ext'):
        pathname = os.path.join(srcdir, basename)
        if os.path.isfile(pathname):
            shutil.copy2(pathname, dstdir)

import glob, os, shutil

files = glob.iglob(os.path.join(source_dir, "*.ext"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dest_dir)

قراءة وثائق وحدة شوتيل لاختيار الوظيفة التي تناسب احتياجاتك (shutil.copy ()، shutil.copy2 () أو shutil.copyfile ()).


نسخ الملفات مع ملحق "امتداد" من سركدير إلى دستدير ...

import os, shutil, sys

srcDir = sys.argv[1] 
dstDir = sys.argv[2]
extension = sys.argv[3]

print "Source Dir: ", srcDir, "\n", "Destination Dir: ",dstDir, "\n", "Extension: ", extension

for root, dirs, files in os.walk(srcDir):
    for file_ in files:
        if file_.endswith(extension):
            shutil.copy(os.path.join(root, file_), os.path.join(dstDir, file_))




copy