উত্তর:
আসল উত্তর:
import os
for filename in os.listdir(directory):
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue
উপরের উত্তরের পাইথন ৩. version সংস্করণটি ব্যবহার করে os
- ধরে নেওয়া যায় যে আপনাকে str
ভেরিয়েবলের মধ্যে একটি অবজেক্ট হিসাবে ডিরেক্টরি পথ বলে থাকে directory_in_str
:
import os
directory = os.fsencode(directory_in_str)
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue
বা পুনরাবৃত্তভাবে, ব্যবহার করে pathlib
:
from pathlib import Path
pathlist = Path(directory_in_str).glob('**/*.asm')
for path in pathlist:
# because path is object not string
path_in_str = str(path)
# print(path_in_str)
directory = os.fsencode(directory_in_str) for file in os.listdir(directory): filename = os.fsdecode(file) if filename.endswith(".asm") or filename.endswith(".py"): # print(os.path.join(directory, filename)) continue else: continue
print(os.path.join(directory, filename))
print(os.path.join(directory_in_str, filename))
অজগর 3.6 এ কাজ করার জন্য এটি পরিবর্তন করতে হবে
for entry in os.scandir(path): print(entry.path)
if filename.endswith((".asm", ".py")):
করুনif filename.endswith(".asm") or filename.endswith(".py"):
এটি কেবল ডিরেক্টরিগুলির তাত্ক্ষণিক শিশুদের জন্য নয়, সমস্ত বংশধর ফাইলগুলিতে পুনরাবৃত্তি করবে:
import os
for subdir, dirs, files in os.walk(rootdir):
for file in files:
#print os.path.join(subdir, file)
filepath = subdir + os.sep + file
if filepath.endswith(".asm"):
print (filepath)
আপনি গ্লোব মডিউল ব্যবহার করার চেষ্টা করতে পারেন :
import glob
for filepath in glob.iglob('my_dir/*.asm'):
print(filepath)
পাইথন ৩.৫ থেকে আপনি উপ-ডিরেক্টরিগুলিও অনুসন্ধান করতে পারেন:
glob.glob('**/*.txt', recursive=True) # => ['2.txt', 'sub/3.txt']
ডক্স থেকে:
ইউনিব শেল দ্বারা ব্যবহৃত বিধি অনুসারে গ্লোব মডিউল একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে সমস্ত পাথের নামগুলি সন্ধান করে, যদিও ফলাফলগুলি স্বেচ্ছামূলক ক্রমে ফিরে আসে। কোনও টিলডে সম্প্রসারণ করা হয়নি, তবে *,?, এবং [] এর সাথে প্রকাশিত চরিত্রের ব্যাপ্তিগুলি সঠিকভাবে মিলে যাবে।
পাইথন ৩.৩ থেকে , os.scandir ( ) দিয়ে জিনিসগুলি অনেক সহজ
with os.scandir(path) as it:
for entry in it:
if entry.name.endswith(".asm") and entry.is_file():
print(entry.name, entry.path)
তালিকাডির () পরিবর্তে স্ক্যানডির () ব্যবহার করা কোডের কার্যকারিতা উল্লেখযোগ্যভাবে বাড়িয়ে তুলতে পারে যার জন্য ফাইল টাইপ বা ফাইল বৈশিষ্ট্য সম্পর্কিত তথ্যও প্রয়োজন, কারণ ওএস.ডায়েন্ট্রি অবজেক্টগুলি যদি কোনও ডিরেক্টরি স্ক্যান করার সময় অপারেটিং সিস্টেম সরবরাহ করে তবে এই তথ্যটি প্রকাশ করে। সমস্ত os.DirEntry পদ্ধতিতে একটি সিস্টেম কল করতে পারে, তবে is_dir () এবং is_file () সাধারণত প্রতীকী লিঙ্কগুলির জন্য একটি সিস্টেম কল প্রয়োজন; os.DirEntry.stat () সর্বদা ইউনিক্সে একটি সিস্টেম কল প্রয়োজন তবে উইন্ডোজে প্রতীকী লিঙ্কগুলির জন্য কেবল একটির প্রয়োজন।
entry
একটি হল posix.DirEntry যেমন কুশলী পদ্ধতি একটি গুচ্ছ টাইপ entry.is_dir()
, is_file()
,is_symlink()
পাইথন ৩.৪ এবং পরে স্ট্যান্ডার্ড লাইব্রেরিতে প্যাথলিব সরবরাহ করে। আপনি করতে পারেন:
from pathlib import Path
asm_pths = [pth for pth in Path.cwd().iterdir()
if pth.suffix == '.asm']
অথবা আপনি যদি তালিকা বোধগম্যতা পছন্দ করেন না:
asm_paths = []
for pth in Path.cwd().iterdir():
if pth.suffix == '.asm':
asm_pths.append(pth)
Path
অবজেক্টগুলি সহজেই স্ট্রিতে রূপান্তরিত হতে পারে।
পাইথনের ফাইলগুলির মাধ্যমে আমি কীভাবে পুনরাবৃত্তি করব তা এখানে:
import os
path = 'the/name/of/your/path'
folder = os.fsencode(path)
filenames = []
for file in os.listdir(folder):
filename = os.fsdecode(file)
if filename.endswith( ('.jpeg', '.png', '.gif') ): # whatever file types you're using...
filenames.append(filename)
filenames.sort() # now you have the filenames and can do something with them
এই প্রযুক্তিগুলির মধ্যে কোনওটিই কোনও নির্দেশনা সরবরাহের গ্যারান্টি দেয় না
হ্যাঁ, সুপার অনির্দেশ্য। লক্ষ্য করুন যে আমি ফাইলের নামগুলি বাছাই করেছি, যা গুরুত্বপূর্ণ যদি ফাইলগুলির ক্রমটি গুরুত্বপূর্ণ হয়, যেমন ভিডিও ফ্রেম বা সময় নির্ভর ডেটা সংগ্রহের জন্য। আপনার ফাইলের নামগুলিতে সূচকগুলি অবশ্যই রাখবেন!
from pkg_resources import parse_version
এবং filenames.sort(key=parse_version)
এটা করেছে।
ডিরেক্টরি এবং তালিকা উল্লেখ করার জন্য আপনি গ্লোব ব্যবহার করতে পারেন :
import glob
import os
#to get the current working directory name
cwd = os.getcwd()
#Load the images from images folder.
for f in glob.glob('images\*.jpg'):
dir_name = get_dir_name(f)
image_file_name = dir_name + '.jpg'
#To print the file name with path (path will be in string)
print (image_file_name)
অ্যারেতে সমস্ত ডিরেক্টরি তালিকা পেতে আপনি ওএস ব্যবহার করতে পারেন :
os.listdir(directory)
আমি এখনও এই বাস্তবায়নের সাথে খুব সন্তুষ্ট নই, আমি একটি কাস্টম কনস্ট্রাক্টর রাখতে চাই DirectoryIndex._make(next(os.walk(input_path)))
যাতে আপনি কেবল যে ফাইলটির জন্য ফাইল তালিকা চান তার পথটি পার করতে পারেন। সম্পাদনা স্বাগত!
import collections
import os
DirectoryIndex = collections.namedtuple('DirectoryIndex', ['root', 'dirs', 'files'])
for file_name in DirectoryIndex(*next(os.walk('.'))).files:
file_path = os.path.join(path, file_name)
আমি লাইব্রেরিতে scandir
নির্মিত নির্দেশিকাটি ব্যবহার করতে পছন্দ করি os
। এখানে একটি কার্যকারী উদাহরণ:
import os
i = 0
with os.scandir('/usr/local/bin') as root_dir:
for path in root_dir:
if path.is_file():
i += 1
print(f"Full path is: {path} and just the name is: {path.name}")
print(f"{i} files scanned successfully.")