मैंने सरल पायथन लिपि लिखी है जो मुझे दी गई निर्देशिका के सबफ़ोल्डर्स के सबफ़ोल्डर्स और सबफ़ोल्डर्स के पूर्ण पथों की एक सूची प्रदान करती है। फिर सूची फाइल करने के लिए लिखी जाती है। मेरा अगला लक्ष्य निर्देशिकाओं (chmod, chgrp आदि) की अनुमतियों में हेरफेर करने के लिए किसी तरह उस फ़ाइल को पार्स करना होगा।

यहाँ कुछ (MS Windows) पथों वाली फ़ाइल का एक स्निपेट है, लेकिन वास्तव में मैं इसे यूनिक्स मशीन/एस पर उपयोग करूँगा।

C:\Users\Me\Desktop\gopro\New folder\1
C:\Users\Me\Desktop\gopro\New folder\2
C:\Users\Me\Desktop\gopro\New folder\3
C:\Users\Me\Desktop\gopro\New folder\4

मैं इसे पूरा करने के सर्वोत्तम तरीके पर किसी भी विचार की सराहना करता हूं। मैं एक पायथन नौसिखिया हूँ इसलिए इसे ध्यान में रखें।

-2
excessive 24 जुलाई 2019, 20:55

2 जवाब

सबसे बढ़िया उत्तर

चूंकि आपने MS Windows का उल्लेख किया है, आप subprocess.run का उपयोग कर सकते हैं, जो मूल रूप से आपके शेल में कमांड चलाता है।

import subprocess

with open("somefile.txt") as txtfile:
    for each_path in txtfile.readline():
        subprocess.run(
            ["chmod", "777", each_path],
            stdout=subprocess.PIPE,
            stderr=subprocess.STDOUT,
            shell=True,
        )
0
Gravity Mass 24 जुलाई 2019, 21:39

मैं इस प्रश्न को गलत समझ सकता हूं, लेकिन मुझे लगता है कि यदि आप निर्देशिकाओं पर शेल कमांड चलाना चाहते हैं, तो आप यही खोज रहे हैं:


import os # this is insecure, so USE WITH CAUTION (never in production). 

with open('list_of_directories.txt') as f:
    for folder_name in f.readlines(): # read each line from the file.
        os.system("chmod 777 {}".format(folder_name)) # os.system lets you run shell commands.
        # ...

कृपया ध्यान दें कि जबकि os.system() समस्या को हल करने का सबसे आसान तरीका है, यह बेहद असुरक्षित है। इसे उत्पादन स्क्रिप्ट पर कभी भी उपयोग न करें, लेकिन यह त्वरित उपयोगिता स्क्रिप्ट के लिए ठीक है, जैसा कि मुझे लगता है कि यह आपका उपयोग मामला है।

1
A. Kumar 24 जुलाई 2019, 21:30