পাইথন ২.7: ফাইল থেকে মুদ্রণ করুন


97

sys.stdoutনিম্নলিখিত সিনট্যাক্স ত্রুটির পরিবর্তে কেন সরাসরি কোনও ফাইলে মুদ্রণের চেষ্টা করা হচ্ছে :

Python 2.7.2+ (default, Oct  4 2011, 20:06:09)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f1=open('./testfile', 'w+')
>>> print('This is a test', file=f1)
  File "<stdin>", line 1
    print('This is a test', file=f1)
                            ^
SyntaxError: invalid syntax

সহায়তা থেকে (__ বিল্টিনস__) আমার কাছে নিম্নলিখিত তথ্য রয়েছে:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file: a file-like object (stream); defaults to the current sys.stdout.
    sep:  string inserted between values, default a space.
    end:  string appended after the last value, default a newline.

তাহলে স্ট্যান্ডার্ড স্ট্রিম প্রিন্টে লেখার জন্য সঠিক বাক্য গঠন কী হবে?

আমি জানি যে ফাইলগুলিতে লেখার আরও ভাল উপায় রয়েছে তবে আমি কেন সত্যিই পাই না কেন এটি একটি সিনট্যাক্স ত্রুটি হওয়া উচিত ...

একটি দুর্দান্ত ব্যাখ্যা প্রশংসা হবে!


4
তুমি কি নিশ্চিত? print()পাইথন 3.x বিল্ট ইন ইন ফাংশন, অন্যদিকে printপাইথন <3.x অপারেটর। পোস্ট দেখায় 2.7.2+
খচিক

4
তুমি কি করেছ from __future__ import print_function? পাইথন <3 এ, মুদ্রণটি একটি বিবৃতি:
এরি

4
না! আমি না। অবশ্যই আপনি ঠিক। যা সমস্যার সমাধান করে। দাম্মিত! সুতরাং সহায়তায় ডকুমেন্টেড প্রিন্ট (_ বিল্টিন_ ) মুদ্রণের ভবিষ্যতের (3.x) সংস্করণ যা আলাদা সিনট্যাক্স রয়েছে। আপনাকে অনেক ধন্যবাদ এবং আপনিও, কাচিক
অ্যালেক্স

4
আইএমও, এটি help(__builtins__)প্রদর্শন করে যে এগুলি একটি বাগ।
Wooble

4
... যদিও আরও তদন্ত করে অজগর ২.7.২ এর একটি অন্তর্নির্মিত মুদ্রণ ফাংশন রয়েছে, আপনি কেবল এটি সহজেই অ্যাক্সেস করতে পারবেন না ( __builtins__.__dict__['print'](value, file=f1)যদিও কাজ করে)।
Wooble

উত্তর:


138

আপনি যদি printপাইথন 2 এ ফাংশনটি ব্যবহার করতে চান তবে আপনাকে এখান থেকে আমদানি করতে হবে __future__:

from __future__ import print_function

তবে আপনি ফাংশনটি ব্যবহার না করেও একই প্রভাব ফেলতে পারেন:

print >>f1, 'This is a test'

72

মুদ্রণটি পাইথন ২. এক্স এর একটি কীওয়ার্ড is আপনার নিম্নলিখিত ব্যবহার করা উচিত:

f1=open('./testfile', 'w+')
f1.write('This is a test')
f1.close()

4
এটি মুদ্রণের সমতুল্য করতে আপনাকে \ n যুক্ত করতে হবে need
jlh

44

print(args, file=f1)পাইথন 3.x সিনট্যাক্স। পাইথন ২.x ব্যবহারের জন্য print >> f1, args


4
আমার মনে হয় আপনারও উল্লেখ করা উচিত from __future__ import print_function। তারপরে আপনি পাইথন 2 এবং 3 উভয়টিতে স্পষ্ট স্বরলিপিটি ব্যবহার করতে পারেন
মার্টিন থোমা

@ মুজ, ইতিমধ্যে একটি দুর্দান্ত গেন্ডারোর উত্তর রয়েছে, এতে আমার উত্তর এবং আপনার নোট অন্তর্ভুক্ত রয়েছে।
সিটিএক্সএক্স

4
আমি পেতে AttributeError: 'str' object has no attribute 'write'আপনার python3 সিনট্যাক্স সঙ্গে
Suncatcher

4
@ সানকাচার, আপনি সম্ভবত আসল ফাইল অবজেক্টের পরিবর্তে এফ 1 হিসাবে ফাইলের নাম যুক্ত স্ট্রিংটি পাস করার চেষ্টা করছেন। আপনাকে প্রথমে লেখার জন্য ফাইলটি খুলতে হবে:f1 = open('path_to_your_file', 'w')
সিটিএক্সএক্স

হ্যাঁ, আমি ভেবেছিলাম এটি ফাইলের নাম হওয়া উচিত, ফাইলের বস্তু নয়।
সানকাচার

13

আপনি কোনও কোড পরিবর্তন না করে ফাইলটিতে মুদ্রণ বিবরণী রফতানি করতে পারেন। কেবলমাত্র একটি টার্মিনাল উইন্ডো খুলুন এবং আপনার কোডটি এইভাবে চালান:

python yourcode.py >> log.txt


6

পাইথন 3.0.০+ printতে একটি ফাংশন , যা দিয়ে আপনি কল করবেন print(...)। পূর্ববর্তী সংস্করণে, printএটি দিয়ে একটি বিবৃতি দেওয়া হয় print ...

পাইথনের একটি ফাইলের মুদ্রণের জন্য 3.0 এরও আগে, আপনি এটি করতে:

print >> f, 'what ever %d', i

>>অপারেটর ফাইল প্রিন্ট নির্দেশ f


আমি ফাইলটিতে একটি সম্পূর্ণ অ্যারে মুদ্রণ করতে চাই। আমি যদি আপনার কোড ব্যবহার করি তবে টার্মিনাল থেকে আউটপুট যেমন অ্যারের কেবল মাথা এবং লেজ মুদ্রিত হয়েছিল। ফাইলটিতে সমস্ত অ্যারে লাইন কীভাবে প্রিন্ট করা যায়?
সিগুর

@ সিগুর "টার্মিনাল থেকে আউটপুট পছন্দ করুন" দুঃখিত, তবে বাগটি অন্য কোথাও রয়েছে। আপনি পাইথনকে পুরো জিনিসটি মুদ্রণ করতে বলছেন না, এ কারণেই এটি নয়।
wizzwizz4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.