অজগর প্রিন্ট শেষ = ''


115

আমার এই অজগর স্ক্রিপ্টটি আছে যেখানে আমার চালানো দরকার gdal_retile.py

তবে আমি এই লাইনে একটি ব্যতিক্রম পাই:

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

end=''অবৈধ সিনট্যাক্স হয়। আমি কেন আগ্রহী, এবং লেখক সম্ভবত কী বোঝাতে চেয়েছিলেন।

আপনি যদি ইতিমধ্যে অনুমান না করেন তবে আমি অজগরে নতুন।


আমি মনে করি সমস্যার মূল কারণ হ'ল এই আমদানি ব্যর্থ হচ্ছে এবং সুতরাং একটি অবশ্যই এই আমদানি থাকা উচিত from __future__ import print_function

try: 
   from osgeo import gdal
   from osgeo import ogr
   from osgeo import osr
   from osgeo.gdalconst import *
except:
   import gdal
   import ogr
   import osr
   from gdalconst import *

2
আপনি যে ব্যতিক্রমটি পেয়েছেন তার সেরা নির্ণয়ের জন্য যদি আপনি ট্রেসব্যাক পোস্ট করেন তবে এটি সত্যিই সহায়তা করে। সুস্পষ্ট বাক্য গঠন ত্রুটিটি উদ্বোধনের উদ্ধৃতিগুলির অভাব থেকে। যদি এটি স্থির করা হয়ে থাকে তবে এটি পাইথন 2 এ এখনও একটি সিনট্যাক্স ত্রুটি হবে, যার __future__আমদানি ছাড়াই মুদ্রণ ফাংশন নেই ।
মাইক গ্রাহাম

2
যেমন আমি একপাশে, ভেরিয়েবলগুলি যা ছোট নয় সেগুলি ClassNamesছোট হাতের অক্ষর দিয়ে শুরু করা উচিত।
মাইক গ্রাহাম

আরআরটি / @ মাইক, পাইথনে ভেরিয়েবল নামকরণ এবং কোডিং শৈলীর সম্পূর্ণ নির্দেশিকাগুলির জন্য পাইথন.অর্গ / দেবদেবী / পেপস / পেপ-0008 দেখুন । গাইডলাইনগুলি মেনে চলা ভাল ধারণা কারণ পাইথনে আপনার বেশিরভাগ ধারাবাহিক লাইব্রেরির সাথে কাজ করার সুযোগ রয়েছে এবং আপনি অন্যান্য লোকের কোড নিয়ে কাজ করার পরেও প্রায়শই সাধারণ অনুমানের খেলাটি (যেমন পিএইচপি) এড়াতে পারবেন।
অ্যালান বরই

5
ভবিষ্যতে ত্রুটিগুলি, বিশেষত সিনট্যাক্স ত্রুটিগুলির সাহায্যের জন্য জিজ্ঞাসা করার সময় , কোনও টাইপ না করে আপনার চলমান চেষ্টা করা ঠিক কোডটি সরবরাহ করার চেষ্টা করা উচিত ।
মাইক গ্রাহাম

@ মাইক - আমি সাধারণত এটি আবার টাইপ করার ক্ষেত্রে কখনই বিরক্ত করতাম না, তবে কোডটি রিমোট কম্পিউটারে থাকায় আমি তা করতে পারিনি। আমি ভবিষ্যতে আরও সতর্কতা অবলম্বন করব।
হাতের

উত্তর:


155

আপনি কি পাইথন ৩.x ব্যবহারের বিষয়ে নিশ্চিত? পাইথন ২.x এ বাক্য গঠনটি উপলভ্য নয় কারণ printএখনও একটি বিবৃতি রয়েছে।

print("foo" % bar, end=" ")

পাইথন ২.x এ সমান

print ("foo" % bar, end=" ")

অথবা

print "foo" % bar, end=" "

অর্থাত্ একটি টিপল যুক্তি হিসাবে মুদ্রণের জন্য একটি কল।

এটি স্পষ্টতই খারাপ সিনট্যাক্স (আক্ষরিকরা কীওয়ার্ড আর্গুমেন্ট নেয় না)। পাইথন 3.x printএ একটি আসল ফাংশন, সুতরাং এটি কীওয়ার্ড আর্গুমেন্টও গ্রহণ করে।

পাইথন ২.x এর সঠিক প্রতিমাটি end=" "হ'ল:

print "foo" % bar,

(চূড়ান্ত কমা নোট করুন, এটি লাইনব্রেকের পরিবর্তে স্থানের সাথে লাইনটি শেষ করে দেয়)

আপনি যদি আউটপুটটিতে আরও নিয়ন্ত্রণ চান তবে sys.stdoutসরাসরি ব্যবহার বিবেচনা করুন । এটি আউটপুট সহ কোনও বিশেষ যাদু করবে না।

অবশ্যই পাইথন ২.x এর সাম্প্রতিক সংস্করণগুলিতে (2.5 এর এটি থাকা উচিত, 2.4 সম্পর্কে নিশ্চিত নয়), আপনি __future__এটি আপনার স্ক্রিপ্ট ফাইলে সক্ষম করতে মডিউলটি ব্যবহার করতে পারেন :

from __future__ import print_function

একই unicode_literalsজিনিস এবং কিছু অন্যান্য সুন্দর জিনিস ( with_statementউদাহরণস্বরূপ) সাথেও চলে । যদিও এটি পাইথন ২.x এর পুরানো সংস্করণগুলিতে (অর্থাত্ বৈশিষ্ট্যটি প্রবর্তনের আগে তৈরি করা) কাজ করবে না।


1
আমি ব্যবহার করে খনি সংস্করণটি পরীক্ষা করেছিলাম dpkg -p pythonএবং এটি সংস্করণটি ২.xx.০.০.১৫ x ছিল। আপনাকে অনেক ধন্যবাদ, আমি এটিকে রূপে রাখার পরামর্শটি প্রয়োগ করেছি print "foo" %bar, এবং এটি পুরোপুরি ঠিকঠাক কাজ করেছে।
মেহরাদ

মনে রাখবেন, পাইথন ২ print foo, barএবং এর print (foo, bar)মধ্যে একটি (সূক্ষ্ম) পার্থক্য রয়েছে The পূর্ববর্তীটি printতার "আর্গুমেন্ট" তালিকার দুটি আইটেম সহ একটি বিবৃতি; দ্বিতীয়টি printতার যুক্তি তালিকার একক টুপল সহ একটি বিবৃতি।
চ্যানার

আপনার উদাহরণ কার্যকর print("foo" % bar, end=" ")হবে না, যেহেতু barসংজ্ঞায়িত করা হয়নি; সুতরাং barআপনার উদাহরণে কি? (পাইথন ৩.7 সহ কমপক্ষে আমার পক্ষে)
কাসউদ

50

এটি সম্পর্কে:

#Only for use in Python 2.6.0a2 and later
from __future__ import print_function

এটি আপনাকে printসমস্ত ঘটনা হ্যান্ড-এডিট printনা করে পাইথন 3.0 স্টাইলের ফাংশনটি ব্যবহার করতে দেয় :)


17

অজগর ২.7 এ আপনি এটি কীভাবে করেন তা এখানে

mantra = 'Always look on the bright side of life'
for c in mantra: print c,

#output
A l w a y s   l o o k   o n   t h e   b r i g h t   s i d e   o f   l i f e

পাইথন 3.x এ

myjob= 'hacker'
for c in myjob: print (c, end=' ')
#output 
h a c k e r 

5
মানুষ, আপনি কেবল কয়েক দিনের জন্য আমাকে বিভ্রান্ত করার একটি সমস্যার সমাধান করেছেন, আমি কেবল সেই হুইসেল এবং পুরানো দিনের দৃশ্যের কথা মনে করি কিন্তু লিরিসের কথা মনে করি না, এবং শেষ পর্যন্ত আমি বুঝতে পারি যে গানটি কী !!
স্পিহিঙ্কস-হেনরিএ

@ স্পাইনক্স-হেনরিএ আপনাকে ভাইকে সাহায্য করতে পেরে খুশি
রিতেশ কারওয়া

আপনার দ্বিতীয় উদাহরণে এটি প্রদর্শিত হয় যে h a c k e r এর মধ্যে অক্ষরের মধ্যে ফাঁকা স্থান রয়েছে। আমি পাইথন ৩.7.৩ ব্যবহার করছি এবং এর সাথে আমি মোটেও কোনও স্থান পাচ্ছি না end=''
নাগেভ

@ নাগেভ সবেমাত্র '' এর শেষ = '' এর মধ্যে একটি স্থান রেখেছেন
রিতেশ কারওয়া

ধন্যবাদ, আমি না স্থান চাই, এটা শুধু আমি ভেবেছিলাম যে আমি আপনার কোড দেখেছি ছাড়া স্থান এখনো আউটপুট ব্যবধানে ছিল, যা অসঙ্গত করলো, সব যে।
নাগেভ

5

প্রথমত, আপনি শুরুতে একটি উদ্ধৃতি মিস করছেন তবে এটি সম্ভবত একটি অনুলিপি / পেস্ট ত্রুটি।

পাইথন 3.x এ, end=' 'অংশটি একটি নতুন লাইনের পরিবর্তে প্রদর্শিত স্ট্রিংয়ের পরে একটি স্থান স্থাপন করবে। পাইথন ২.x এ একই কাজ করতে, আপনি শেষে কমা রেখেছিলেন:

print "Building internam Index for %d tile(s) ..." % len(inputTiles),

আমি পাইথন 2 তে এরকম কিছু করতে ছেদ করছি সিনট্যাক্সটি কী হবে? কমা যুক্ত করার অর্থ কী?
রুমি

1
@ রমি আমার উত্তরের কোডটি পাইথন 2 এ রয়েছে ... এবং আমি শেষে কমাটি উল্লেখ করছি।
আন্তজয়

4

আমি মনে করি তিনি পাইথন ৩.০ ব্যবহার করছেন এবং আপনি পাইথন ২.6 ব্যবহার করছেন।


1
ভাল যুক্তি! অনুপস্থিত উদ্ধৃতি যেমন ঠিক print("foo" % bar, end = " ")end = " "
তেমন

3

এটি কেবল একটি সংস্করণ জিনিস। পাইথন ৩.x যেহেতু মুদ্রণটি আসলে একটি ফাংশন, তাই এখন এটি কোনও সাধারণ ফাংশনের মতো আর্গুমেন্ট নেয়।

কেবল end=' 'এটিই বলা যায় যে আপনি নতুন লাইন চরিত্রের পরিবর্তে স্টেটমেন্ট শেষ হওয়ার পরে একটি স্থান চান। পাইথন ২.x এ আপনাকে মুদ্রণ বিবৃতিটির শেষে কমা রেখে এটি করতে হবে।

উদাহরণস্বরূপ, যখন পাইথন 3.x পরিবেশে:

while i<5:
    print(i)
    i=i+1

নিম্নলিখিত আউটপুট দেবে:

0
1
2
3
4

যেখানে হিসাবে:

while i<5:
    print(i, end = ' ')
    i=i+1

আউটপুট হিসাবে দেবে:

0 1 2 3 4

অফিসিয়াল ডকুমেন্টেশনের লিঙ্কটি print()সহায়ক হতে পারে, যেহেতু সেখানে কেউ '\n'যুক্তির জন্য ডিফল্ট মান দেখতে পারে end: ডকস.পিথন.আর
ফাংশনস

উপরের উদাহরণের মতো শেষ পর্যন্ত কোনও স্থান ভুলে যাবেন না: "হ্যাকার" এখানে আউটপুটটি যথাযথভাবে শেষ স্থানের সাথে "0 1 2 3 4" হওয়া উচিত
অ্যানাল্ট

2

দেখে মনে হচ্ছে আপনি কেবল একটি খোলার দ্বি-উক্তিটি মিস করছেন missing চেষ্টা করুন:

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

1

আমি মনে করি লেখক সম্ভবত বোঝাতে চেয়েছিলেন:

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

তার পরে তিনি একটি প্রাথমিক উদ্ধৃতি মিস করছেন print(

লক্ষ্য করুন হিসাবে পাইথন 3.0 , printএকটি ফাংশন হিসাবে এক বিবৃতিতে বিরোধিতা হয়, তাহলে আপনি Python- র পুরোনো সংস্করণগুলি ব্যবহার করছেন সমতুল্য হবে:

print "Building internam Index for %d tile(s) ..." % len(inputTiles)

endপ্যারামিটার মানে লাইন পায় ' 'শেষ বদলে একটি newline অক্ষর করেন। পাইথনের আগের সংস্করণগুলির সমতুল্য:

print "Building internam Index for %d tile(s) ..." % len(inputTiles),

(ধন্যবাদ Ignacio)।


1
,শেষে একটি যুক্ত করা এটি করবে।
ইগনাসিও ওয়াজকেজ-আব্রামগুলি

1

ব্যবহার :: python3 filename.py

আমার যেমন ত্রুটি হয়েছিল, এটি ঘটেছিল কারণ আমার ড্রাইভে পাইথন 2.7 এবং পাইথন 3 নামে পাইথন দুটি সংস্করণ ইনস্টল করা আছে। নিম্নলিখিতটি আমার কোডটি ছিল:

#!usr/bin/python

f = open('lines.txt')
for line in f.readlines():
        print(line,end ='')

কমান্ড দ্বারা এটি চালানোর সময় আমি python lines.pyনিম্নলিখিত ত্রুটি পেয়েছি

#!usr/bin/python

f = open('lines.txt')
for line in f.readlines():
        print(line,end ='')

আমি যখন কমান্ড দিয়ে এটি চালিত করি তখন আমি python3 lines.pyসফলভাবে সম্পাদন করেছি


3
#! / ইউএসআর / বিন / এনভিভি পাইথন 3
মিংলিয়ং লিউ

1

পাইথন ২.7-এর জন্য আমার একই সমস্যা ছিল কেবল এই সমস্যাটি সমাধান করার জন্য " __future__ আমদানি প্রিন্ট_ফংশান " ব্যবহার করুন his এটি পাইথন ২.6 নিশ্চিত করে এবং পরবর্তীকালে পাইথন ২.x পাইথন ৩.x মুদ্রণ ফাংশন ব্যবহার করতে পারে use


1

যদি আপনি পাইথন ২.7 নিয়ে কাজ করছেন তবে এটি ব্যবহার করে দেখুন:

from __future__ import print_function

স্ট্যাকওভারফ্লোতে আপনাকে স্বাগতম: আপনি যদি কোড, এক্সএমএল বা ডেটা নমুনাগুলি পোস্ট করেন তবে দয়া করে টেক্সট সম্পাদকের সেই লাইনগুলি হাইলাইট করুন এবং সম্পাদনা সরঞ্জামদণ্ডে "কোড স্যাম্পল" বোতামটি ({}) ক্লিক করুন বা আপনার কীবোর্ডের সিআরটিএল + কে ব্যবহার করুন সুন্দর বিন্যাসে এবং সিনট্যাক্স এটি হাইলাইট!
হোয়াটপয়েন্ট

0

এমনকি আমি আজ একই ত্রুটি পেয়েছিলাম। এবং আমি একটি আকর্ষণীয় জিনিস অভিজ্ঞতা আছে। আপনি যদি পাইথন ৩.x ব্যবহার করে থাকেন এবং তবুও ত্রুটিটি পান তবে এটি একটি কারণ হতে পারে:

আপনি একই ড্রাইভে একাধিক পাইথন সংস্করণ ইনস্টল করেছেন। এবং আপনি যখন f5 বোতাম টিপেন তখন অজগর শেল উইন্ডোটি (ভার্ << 3.x) পপ আপ হয়

আমি আজ একই ত্রুটি পেয়েছিলাম, এবং সেই জিনিসটি লক্ষ্য করেছি। আমাকে বিশ্বাস করুন, আমি যখন আমার কোডটি যথাযথ শেল উইন্ডো থেকে (ভার্সন 3.x এর) সম্পাদন করি, তখন আমি সন্তোষজনক ফলাফল পেয়েছি


0

ব্যবহারের আগে আমাদের একটি শিরোনাম আমদানি করা দরকার end=''কারণ এটি পাইথনের সাধারণ রানটাইমটিতে অন্তর্ভুক্ত নয়।

from __future__ import print_function

এটি এখন নিখুঁতভাবে কাজ করবে


0

পাইথন 2 এবং 3 উভয়ের সাথেই সামঞ্জস্যপূর্ণ :

sys.stdout.write('mytext')

শুধুমাত্র পাইথন 2 এর সাথে সামঞ্জস্যপূর্ণ

print 'mytext',

শুধুমাত্র পাইথন 3 এর সাথে সামঞ্জস্যপূর্ণ

print('mytext', end='')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.