পাইথনে আমি কীভাবে কোনও ডিরেক্টরিতে লিখিত থাকতে পারি?


উত্তর:



52

একমুখী:

import os
os.listdir("/home/username/www/")

অন্য উপায় :

glob.glob("/home/username/www/*")

উদাহরণ এখানে পাওয়া যায়

glob.globপদ্ধতি লুকানো ফাইল তালিকা প্রস্তুত করা যাবে উপরে।

যেহেতু আমি মূলত বহু বছর আগে এই প্রশ্নের উত্তর দিয়েছি, তাই পাথলিব পাইথনে যুক্ত হয়েছে। ডিরেক্টরিকে তালিকার জন্য এখন আমার পছন্দের উপায়টিতে সাধারণত জিনিসগুলির iterdirপদ্ধতি অন্তর্ভুক্ত থাকে Path:

from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")

যখন glob.glob ব্যবহার করা হয় তখন লুকানো ফাইলগুলি (আমি ধরে নিয়েছি যে আপনি .XYZইউনিক্স ফাইল-সিস্টেমের প্রসঙ্গে ফাইলগুলি বোঝাবেন) তালিকাভুক্ত করবেন glob.glob("/home/username/www/.*")?
অ্যান্ডি ফিনকেনস্ট্যাড

হ্যাঁ আমার অর্থ ফাইলগুলি বিন্দু দিয়ে শুরু করা। আপনি যে উদাহরণটি দিয়েছেন তা লুকানো ফাইলগুলি (এবং শুধুমাত্র লুকানো ফাইলগুলি) মেলাতে কাজ করবে।
ট্রে হানার

আমি সবেমাত্র গ্লোব আমদানি করেছি এবং glob.glob (r'c: \ ব্যবহারকারীদের) ব্যবহার করেছি তবে এটি কেবল ফিরে এসেছে['c:\\users']
Musixauce3000

1
@ মিউজিকস ৩০০০০: আপনি করতে চাইবেন glob.glob(r'c:\users\*')(বিশ্বব্যাপী এটি ডিরেক্টরিগুলি তালিকাভুক্ত করে না, তবে তারকাচিহ্নগুলি প্রসারিত করে এবং এটি একই ধরণের কার্য সম্পাদন করে)।
ট্রে হুনার

38

os.walk আপনার পুনরাবৃত্তি প্রয়োজন হলে ব্যবহার করা যেতে পারে:

import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
    for filename in files:
        print os.path.join(path,filename)

18

glob.globবা os.listdirএটি করবে।


import globENTER glob.glob(r'c:\users')ENTER কেবল ফিরে আসবে বলে মনে হচ্ছে ['c:\\users']। কেন এমন? আমি glob.glob ব্যবহার করতে চাই কারণ অন্যান্য ব্যবহারকারীরা যেমন উল্লেখ করেছেন, এটি লুকানো ফাইলগুলি উপেক্ষা করার সময় এটি কোনও ডিরেক্টরিতে থাকা বিষয়বস্তুও প্রত্যাখ্যান করে। এটা গুরুত্বপূর্ণ.
Musixauce3000

কারণ আপনার সাথে একটি ওয়াইল্ডকার্ড নির্দিষ্ট করতে হবে glob:glob.glob(r'c:\users\*')
জিন-ফ্রান্সোইস ফ্যাব্রে

14

osমডিউল হ্যান্ডলগুলি যে সব উপাদান।

os.listdir(path)

ডিরেক্টরি অনুসারে ডিরেক্টরিতে প্রবেশের নাম সম্বলিত একটি তালিকা ফেরত দিন। তালিকাটি স্বেচ্ছাসেবী ক্রমে। এটিতে বিশেষ এন্ট্রি অন্তর্ভুক্ত নয়। ' এবং '..' এমনকি তারা ডিরেক্টরিতে উপস্থিত থাকলেও।

উপলভ্যতা: ইউনিক্স, উইন্ডোজ।


4

পাইথন ৩.৪++ এ আপনি নতুন pathlibপ্যাকেজটি ব্যবহার করতে পারেন :

from pathlib import Path
for path in Path('.').iterdir():
    print(path)

Path.iterdir()একটি পুনরুক্তি ফেরত দেয়, যা সহজেই একটিতে রূপান্তরিত হতে পারে list:

contents = list(Path('.').iterdir())

3

পাইথন ৩.৩ থেকে আপনি ব্যবহার করতে পারেন os.scandir

পার্থক্যটি হ'ল এটি ফাইলের এন্ট্রি নাম দেয় না returns উইন্ডোজের মতো কিছু ওএসে, এর অর্থ হ'ল os.path.isdir/fileএটি কোনও ফাইল কিনা এবং তা আপনাকে জানার দরকার নেই এবং এটি সিপিইউর সময় সাশ্রয় করে কারণstat উইন্ডোজে ডায়ার স্ক্যান করার ইতিমধ্যে সম্পন্ন হয়েছে:

max_valueবাইটের চেয়ে বড় একটি ডিরেক্টরি তালিকা এবং ফাইল মুদ্রণের উদাহরণ :

for dentry in os.scandir("/path/to/dir"):
    if dentry.stat().st_size > max_value:
       print("{} is biiiig".format(dentry.name))

(খনি বিস্তৃত কর্মক্ষমতা ভিত্তিক উত্তর পড়তে এখানে )


2

নীচে কোড ডিরেক্টরিতে এবং dir মধ্যে ফাইল তালিকাভুক্ত করবে। অন্যটি হ'ল ওসওয়াক

def print_directory_contents(sPath):
        import os                                       
        for sChild in os.listdir(sPath):                
            sChildPath = os.path.join(sPath,sChild)
            if os.path.isdir(sChildPath):
                print_directory_contents(sChildPath)
            else:
                print(sChildPath)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.