मैं लिनक्स कमांड लाइन से अपने पायथन स्क्रिप्ट में इनपुट कैसे प्राप्त करूं?

मैं एक पायथन लिपि में chmod जैसे फ़ाइल पर कमांड निष्पादित करने का प्रयास कर रहा हूं। मैं कमांड लाइन से स्क्रिप्ट में फ़ाइल नाम कैसे प्राप्त कर सकता हूं? मैं इस तरह की स्क्रिप्ट निष्पादित करना चाहता हूं ./addExecute.py blah जहां ब्लाह कुछ फाइल का नाम है। मेरे पास कोड यह है:

#!/usr/bin/python
import sys
import os
file = sys.argv[1]
os.system("chmod 700 file")

मैं त्रुटि प्राप्त करता रहता हूं कि यह 'फ़ाइल' तक ऐसी फ़ाइल या निर्देशिका तक नहीं पहुंच सकता है।

0
धन्यवाद दोस्तों मैंने इसे बदल दिया: os.chmod (फ़ाइल, 0700) अब महान काम करता है!
जोड़ा लेखक David, स्रोत

4 उत्तर

os.system("chmod 700 file")
                     ^^^^--- literal string, looking for a file named "file"

आप शायद चाहते हैं

os.system("chmod 700 " + file)
                       ^^^^^^---concatenate your variable named "file"
0
जोड़ा
ध्यान दें कि यह chmod करने का सुरक्षित तरीका नहीं है। इसके अलावा, पायथन में os.chmod बनाया गया है।
जोड़ा लेखक user2357112, स्रोत

यह कुछ ऐसा हो सकता है

os.system("chmod 700 %s" % file)
0
जोड़ा
os.system("chmod 700 file")

फ़ाइल को इसके मूल्य से प्रतिस्थापित नहीं किया गया है। इसे इस्तेमाल करे :

os.system("chmod 700 " + file)

बीटीडब्लू, आपको यह जांचना चाहिए कि स्क्रिप्ट को पैरामीटर के साथ निष्पादित किया गया था (आपको "सूची से बाहर सूची सूची" जैसी त्रुटि हो सकती है)

0
जोड़ा

जैसा कि अन्य उत्तरों द्वारा इंगित किया गया है, आपको इसके बजाय वैरिएबल फ़ाइल के मान को रखने की आवश्यकता है। हालांकि, सुझाए गए मानक के बाद, आपको प्रारूप का उपयोग करना चाहिए और इसे पसंद करना चाहिए

os.system("chmod 700 {:s}".format(file))

का उपयोग करते हुए

os.system("chmod 700 %s" % file)

निराश है, सीएफ। पायथन स्ट्रिंग स्वरूपण:% बनाम .format

0
जोड़ा