2010-07-27 18 views
118

मैं इस चला रहा हूँ हो रही है:उपयोगकर्ता इनपुट

import csv 
import sys 
reader = csv.reader(open(sys.argv[0], "rb")) 
for row in reader: 
    print row 

और मैं इसे पाने के जवाब में:

['import csv'] 
['import sys'] 
['reader = csv.reader(open(sys.argv[0]', ' "rb"))'] 
['for row in reader:'] 
[' print row'] 
>>> 

sys.argv[0] के लिए मैं यह एक फ़ाइल नाम दर्ज करने के लिए मुझे तुरंत करना चाहते हैं।

मुझे फ़ाइल नाम दर्ज करने के लिए मुझे कैसे संकेत मिलेगा?

print "Enter a file name:", 
filename = raw_input() 

या बस:

+0

आप फ़ाइल नाम उपयोगकर्ता इनपुट या कमांड लाइन तर्क से आते हैं करना चाहते हैं? (उदाहरण के लिए python myScript.py inputfile.txt) –

+2

चूंकि आप अभी पाइथन में शुरुआत कर रहे हैं, इसलिए ट्यूटोरियल को देखना और भाषा की मूल बातें सीखना एक अच्छा विचार हो सकता है, बल्कि आपको आवश्यक सुविधाओं को सीखने की कोशिश करने के बजाय, जब आप कुछ नहीं ढूंढ पा रहे हैं तो StackOverflow पर उत्तरों की खोज करें। इसमें अधिक समय लगेगा, लेकिन आपको भाषा की बेहतर समझ मिलेगी। – chimeracoder

+8

@chimeracoder: दिया गया कि वह आसान तरीका चला गया, लेकिन यह वास्तव में ये प्रश्न हैं जो मुझे Google पर 'इसे देखकर' अगर मैं तुरंत उत्तर ढूंढने की अनुमति देता हूं। इसके अलावा एक छोटी परियोजना के लिए और इतनी अधिक समय नहीं है कि पाइथन पसंद की टूल है क्योंकि इसकी सादगी है, यह अच्छा है कि पूरे ट्यूटोरियल को पढ़ना न पड़े। –

उत्तर

81

अजगर 3.x में चाहते हैं, raw_input()

+3

उपयोगी नहीं है क्या कोई विशिष्ट कारण है कि 'इनपुट() ''x से' raw_input() 'से बेहतर है? टाइप करने में आसान होने के अलावा ... –

+41

@ सिल्वररिंगवी 'raw_input' मौजूद नहीं है। – wizzwizz4

+31

एक बहुत अच्छा कारण है। –

187

उपयोग raw_input() function उपयोगकर्ताओं से इनपुट (2.x) प्राप्त करने के लिए

filename = raw_input('Enter a file name: ') 

या अजगर 3.x में यदि:

filename = input('Enter a file name: ') 
+15

या 'raw_input ("फ़ाइल नाम दर्ज करें:") ' –

+0

@ लोंगपोक - अच्छा बिंदु; जवाब अद्यतन किया है। –

+44

पायथन 3 में, यह सिर्फ 'इनपुट() '- __caution__ है: 2.x में भी एक इनपुट विधि है, लेकिन यह इनपुट eval() है और इसलिए __evil__ है। – delnan

26

sys.argv[0] पहला तर्क नहीं है लेकिन पाइथन प्रोग्राम का फ़ाइल नाम जो आप वर्तमान में निष्पादित कर रहे हैं। मुझे लगता है कि आप sys.argv[1]

+3

नहीं माना जाता है, जिसे उन्होंने पूछा था, लेकिन कम – Sirens

7

के बजाय input() का प्रयोग कर एक छोटे से अधिक कुछ फिर से प्रयोग करने योग्य है, मैं इस के साथ आ गए हैं, जो संकेत करने के लिए जारी है में ऊपर जवाब पूरक करने के लिए उपयोगकर्ता अगर इनपुट अमान्य माना जाता है।

try: 
    input = raw_input 
except NameError: 
    pass 

def prompt(message, errormessage, isvalid): 
    """Prompt for input given a message and return that value after verifying the input. 

    Keyword arguments: 
    message -- the message to display when asking the user for the value 
    errormessage -- the message to display when the value fails validation 
    isvalid -- a function that returns True if the value given by the user is valid 
    """ 
    res = None 
    while res is None: 
     res = input(str(message)+': ') 
     if not isvalid(res): 
      print str(errormessage) 
      res = None 
    return res 

यह मान्यता कार्यों के साथ, इस तरह इस्तेमाल किया जा सकता:

import re 
import os.path 

api_key = prompt(
     message = "Enter the API key to use for uploading", 
     errormessage= "A valid API key must be provided. This key can be found in your user profile", 
     isvalid = lambda v : re.search(r"(([^-])+-){4}[^-]+", v)) 

filename = prompt(
     message = "Enter the path of the file to upload", 
     errormessage= "The file path you provided does not exist", 
     isvalid = lambda v : os.path.isfile(v)) 

dataset_name = prompt(
     message = "Enter the name of the dataset you want to create", 
     errormessage= "The dataset must be named", 
     isvalid = lambda v : len(v) > 0) 
+0

... वास्तव में सवाल का जवाब नहीं देता ... – wizzwizz4

+0

@ wizzwizz4 यह बिल्कुल करता है। क्या आपने जो पढ़ा मैंने पढ़ा? –

+0

यह वैश्विक नामस्थान (पायथन 2 में ओवरराइटिंग इनपुट) को प्रदूषित करता है, और यह वास्तव में उपयोग करना मुश्किल लगता है ('self' क्या है?)। मैंने उभारा है, लेकिन इसे दस्तावेज़ीकरण पर कुछ काम की जरूरत है। – wizzwizz4

5

निम्नलिखित सरल तरीका का प्रयोग करें सहभागी उपयोगकर्ता प्राप्त डेटा आप क्या चाहते हैं पर तर्क के रूप में एक शीघ्र द्वारा करने के लिए।

संस्करण: अजगर 3.X

name = input('Enter Your Name: ') 
print('Hello ', name) 
संबंधित मुद्दे