Latest web development tutorials

المدخلات والمخرجات Python3

في الفصول القليلة الأولى، ولقد لمست فعلا المدخلات بيثون وظيفة الانتاج. هذا الفصل سوف نقدم بيثون المدخلات والمخرجات المحددة.


تنسيق الإخراج تجميل

بيثون اتجاهين قيم الانتاج: تصريحات التعبير وظيفة الطباعة ().

الطريقة الثالثة هي استخدام أسلوب الكائن الملف الكتابة ()، ملف الإخراج القياسي يمكن استخدام sys.stdout المرجعية.

إذا كنت تريد أن الناتج في شكل أكثر تنوعا، يمكنك استخدام وظيفة str.format () لتنسيق قيمة الانتاج.

إذا كنت تريد أن تتحول إلى قيمة سلسلة من الإخراج، يمكنك استخدام repr () أو وظيفة شارع () لتحقيقه.

  • شارع (): الدالة بإرجاع شكل مقروء المستخدم التعبير.
  • repr (): يولد شكلا من أشكال التعبير مترجم للقراءة.

مثلا

>>> s = 'Hello, w3big'
>>> str(s)
'Hello, w3big'
>>> repr(s)
"'Hello, w3big'"
>>> str(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'x 的值为: ' + repr(x) + ',  y 的值为:' + repr(y) + '...'
>>> print(s)
x 的值为: 32.5,  y 的值为:40000...
>>> #  repr() 函数可以转义字符串中的特殊字符
... hello = 'hello, w3big\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, w3big\n'
>>> # repr() 的参数可以是 Python 的任何对象
... repr((x, y, ('Google', 'w3big')))
"(32.5, 40000, ('Google', 'w3big'))"

هناك طريقتان لإخراج مربع ومكعب الجداول:

>>> for x in range(1, 11):
...     print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
...     # 注意前一行 'end' 的使用
...     print(repr(x*x*x).rjust(4))
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1, 11):
...     print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

ملاحظة: في المثال الأول، تم إضافة مسافة بين كل عمود من طباعة ().

يوضح هذا المثال كائن سلسلة rjust () الأسلوب، الذي يمكن أن يكون سلسلة للحق، وملء الفراغ على اليسار.

هناك أساليب مشابهة، مثل ljust () ومركز (). هذه الأساليب لا تكتب أي شيء، هم فقط بإرجاع سلسلة جديدة.

آخر zfill طريقة ()، فإنه سيتم ملء الرقم الأيسر 0، على النحو التالي:

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'

str.format () استخدام الأساسي هو على النحو التالي:

>>> print('{}网址: "{}!"'.format('本教程', 'www.w3big.com'))
本教程网址: "www.w3big.com!"

وداخل الأحرف قوسين (تسمى حقول الشكل) سيتم استبدال مع المعلمة شكل () في.

ويستخدم شكل موقف () في عدد من الأقواس أن نشير الكائن واردة، على النحو التالي:

>>> print('{0} 和 {1}'.format('Google', 'w3big'))
Google 和 w3big
>>> print('{1} 和 {0}'.format('Google', 'w3big'))
w3big 和 Google

إذا كانت الوسيطة الكلمات الرئيسية () في الشكل، ثم سيشير قيمتها إلى اسم المعلمة.

>>> print('{name}网址: {site}'.format(name='本教程', site='www.w3big.com'))
本教程网址: www.w3big.com

يمكن الموقع والكلمة الحجج أن يكون أي مزيج من:

>>> print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'w3big',
                                                       other='Taobao'))
站点列表 Google, w3big, 和 Taobao。
'! A' (باستخدام أسكي ())، (باستخدام شارع ()) و (عن طريق repr ()) يمكن استخدامها لتهيئة قيمة قبل تحولها "ص! 'المفضل':
>>> import math
>>> print('常量 PI 的值近似为: {}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。
>>> print('常量 PI 的值近似为: {!r}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。

يمكن الحقل متبوعا باسم وشكل المعرف: الخيارات ". وهذا يسمح لتنسيق قيمة أفضل. والمثال التالي تحتفظ بي إلى ثلاث خانات عشرية:

>>> import math
>>> print('常量 PI 的值近似为 {0:.3f}。'.format(math.pi))
常量 PI 的值近似为 3.142。

في ':' بعد اجتياز عدد صحيح، يمكنك على الأقل التأكد من أن هناك الكثير من عرض النطاق. من المفيد عند استخدامها في شكل المناظر الطبيعية.

>>> table = {'Google': 1, 'w3big': 2, 'Taobao': 3}
>>> for name, number in table.items():
...     print('{0:10} ==> {1:10d}'.format(name, number))
...
w3big     ==>          2
Taobao     ==>          3
Google     ==>          1

إذا كان لديك سلسلة تنسيق طويلة، وكنت لا تريد أن تفصل بينهما، ثم عند تنسيق من قبل اسم المتغير بدلا من موقع سيكون شيء جيد.

أبسط هو لتمرير في القاموس ثم استخدام الأقواس المربعة "[] 'للوصول إلى المفتاح:

>>> table = {'Google': 1, 'w3big': 2, 'Taobao': 3}
>>> print('w3big: {0[w3big]:d}; Google: {0[Google]:d}; '
          'Taobao: {0[Taobao]:d}'.format(table))
w3big: 2; Google: 1; Taobao: 3

يمكنك أيضا استخدام متغير قبل الجدول "**" لتحقيق الوظيفة نفسها:

>>> table = {'Google': 1, 'w3big': 2, 'Taobao': 3}
>>> print('w3big: {w3big:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))
w3big: 2; Google: 1; Taobao: 3

على الطراز القديم تنسيق سلسلة

المشغل٪ يمكن أن يتحقق تنسيق سلسلة. حجة سلسلة الشكل إلى اليسار كما هو مماثل لsprintf () الصيغة، والحق في الاستبدال، ثم عاد سلسلة منسقة سبيل المثال:

>>> import math
>>> print('常量 PI 的值近似为:%5.3f。' % math.pi)
常量 PI 的值近似为:3.142。

لأن وظيفة str.format () هي جديدة نسبيا، ومعظم كود بايثون لا يزال يستخدم المشغل٪. ومع ذلك، لأنه لن يكون في نهاية المطاف إزالة هذا الشكل القديم من اللغة، يجب عليك استخدام أكثر str.format ().


قراءة مدخلات لوحة المفاتيح

يوفر بايثون يتم تعيين وظيفة الإدخال () من المدخلات لقراءة سطر من النص من مستوى، وإدخال معيار الافتراضي هو لوحة المفاتيح.

ويمكن إدخال الحصول على التعبير بيثون كمدخل وإرجاع نتيجة عملية.

#!/usr/bin/python3

str = input("请输入:");
print ("你输入的内容是: ", str)

وهذا ينتج النتائج التالية المقابلة لمدخل:

请输入:本教程
你输入的内容是:  本教程

قراءة وكتابة ملفات

مفتوحة () بإرجاع كائن ملف، والجملة الأساسية هي كما يلي:

open(filename, mode)
  • اسم الملف: متغير اسم الملف هو سلسلة تحتوي على القيمة التي تريد الوصول إلى اسم الملف.
  • الوضع: وضع وضع يحدد الملف المفتوح: قراءة، كتابة، إلحاق. رؤية قائمة كاملة من كل القيم الممكنة على النحو التالي. هذه المعلمة غير الإلزامية، وطريقة الوصول إلى الملفات الافتراضي للقراءة فقط (ص).

فتح قائمة كاملة من وسائط مختلفة من الملفات:

طريقة وصف
ص فتح الملف في وضع للقراءة فقط. سيتم وضع ملف المؤشر في بداية الملف. هذا هو الوضع الافتراضي.
م ع فتح ملف للقراءة فقط في شكل ثنائي. وملف المؤشر في بداية الملف. هذا هو الوضع الافتراضي.
ص + فتح ملف للقراءة والكتابة. وملف المؤشر في بداية الملف.
م ع + فتح ملف للقراءة والكتابة في شكل ثنائي. وملف المؤشر في بداية الملف.
ث فتح ملف للكتابة فقط. إذا كان الملف موجود مسبقا سيتم الكتابة عليه. إذا لم يكن الملف موجودا، إنشاء ملف جديد.
البنك الدولي فتح ملف للكتابة في شكل ثنائي فقط. إذا كان الملف موجود مسبقا سيتم الكتابة عليه. إذا لم يكن الملف موجودا، إنشاء ملف جديد.
ث + فتح ملف للقراءة والكتابة. إذا كان الملف موجود مسبقا سيتم الكتابة عليه. إذا لم يكن الملف موجودا، إنشاء ملف جديد.
WB + فتح ملف للقراءة والكتابة في شكل ثنائي. إذا كان الملف موجود مسبقا سيتم الكتابة عليه. إذا لم يكن الملف موجودا، إنشاء ملف جديد.
ل فتح ملف للإلحاق. إذا كان الملف موجود بالفعل، سيتم وضع مؤشر الملف في نهاية الملف. وبعبارة أخرى، بعد المحتوى الجديد سوف تكون مكتوبة على المحتوى الموجود. إذا لم يكن الملف موجودا، إنشاء ملف جديد للكتابة.
أ ب فتح ملف للإلحاق في تنسيق ثنائي. إذا كان الملف موجود بالفعل، سيتم وضع مؤشر الملف في نهاية الملف. وبعبارة أخرى، بعد المحتوى الجديد سوف تكون مكتوبة على المحتوى الموجود. إذا لم يكن الملف موجودا، إنشاء ملف جديد للكتابة.
أ + فتح ملف للقراءة والكتابة. إذا كان الملف موجود بالفعل، سيتم وضع مؤشر الملف في نهاية الملف. وسوف إلحاق وضع يتم فتح الملف. إذا لم يكن الملف موجودا، إنشاء ملف جديد للقراءة والكتابة.
أ ب + فتح ملف للإلحاق في تنسيق ثنائي. إذا كان الملف موجود بالفعل، سيتم وضع مؤشر الملف في نهاية الملف. إذا لم يكن الملف موجودا، إنشاء ملف جديد للقراءة والكتابة.

سوف يتم كتابة الأمثلة التالية إلى foo.txt ملف في السلسلة:

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "w")

f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )

# 关闭打开的文件
f.close()
  • المعلمة الأولى هو اسم الملف الذي تريد فتحه.
  • يصف شخصية المعلمة الثانية كيفية استخدام الملف. وضع يمكن أن يكون "ص" إذا تم قراءة فقط الملف، "ث" للكتابة فقط (في حالة وجود ملف سيتم حذفه)، و'ا' لمحتويات الملف إضافية؛ أي بيانات مكتوبة سيتم إضافتها تلقائيا إلى نهاية . "ص +" لكل من القراءة والكتابة. حجة وضع اختيارية؛ و"ص" أن تكون القيمة الافتراضية.

يفتح foo.txt الملف، يظهر كما يلي:

$ cat /tmp/foo.txt 
Python 是一个非常好的语言。
是的,的确非常好!!

طريقة الأجسام ملف

يفترض هذا المثال أن القسم المتبقي خلقت كائن ملف يسمى و ل.

f.read ()

لقراءة محتويات الملف، ندعو f.read (حجم)، والتي سوف قراءة عدد معين من البيانات، ومن ثم عاد ككائن سلسلة أو بايت.

حجم هو معلمة رقمية اختيارية. عندما يتم تجاهل حجم أو هو سلبي، ومحتويات الملف وسيتم قراءة وعاد.

المثال التالي يفترض أن وجود foo.txt ملف (في المثال أعلاه تم إنشاء):

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.read()
print(str)

# 关闭打开的文件
f.close()

البرنامج المذكور أعلاه، والناتج هو:

Python 是一个非常好的语言。
是的,的确非常好!!

f.readline ()

f.readline () تقرأ سطر واحد من الملف. السطر الحرف '\ ن'. f.readline () بإرجاع سلسلة فارغة إذا، وأوضح أنه كان يقرأ في الصف الأخير.

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.readline()
print(str)

# 关闭打开的文件
f.close()

البرنامج المذكور أعلاه، والناتج هو:

Python 是一个非常好的语言。

f.readlines ()

f.readlines () سيعود كافة الصفوف الواردة في الملف.

إذا sizehint المعلمات الاختيارية، ثم قرأ بايت مدة محددة، وهذه بايت مقسوما على الخط.

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.readlines()
print(str)

# 关闭打开的文件
f.close()

البرنامج المذكور أعلاه، والناتج هو:

['Python 是一个非常好的语言。\n', '是的,的确非常好!!\n']

وهناك طريقة أخرى للتنقل أكثر من كائن ملف ثم يقرأ كل سطر:

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

for line in f:
    print(line, end='')

# 关闭打开的文件
f.close()

البرنامج المذكور أعلاه، والناتج هو:

Python 是一个非常好的语言。
是的,的确非常好!!

هذا الأسلوب هو بسيط جدا، ولكنه لا يوفر سيطرة جيدة. سواء بسبب آلية معالجة مختلفة، فمن الأفضل عدم خلط.

f.write ()

f.write (سلسلة) سلسلة كتب للملف، وإرجاع عدد من الحروف.

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "w")

num = f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )
print(num)
# 关闭打开的文件
f.close()

البرنامج المذكور أعلاه، والناتج هو:

29

إذا كنت تريد أن تكتب بعض الأشياء التي ليست سلسلة، وسوف تحتاج إلى تحويلها:

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo1.txt", "w")

value = ('www.w3big.com', 14)
s = str(value)
f.write(s)

# 关闭打开的文件
f.close()

البرنامج المذكور أعلاه، فتح ملف foo1.txt:

$ cat /tmp/foo1.txt 
('www.w3big.com', 14)

f.tell ()

f.tell () إرجاع هو موقف كائن الملف الموجود حاليا، هو عدد وحدات البايت من بداية العد الملف.

f.seek ()

إذا كنت ترغب في تغيير الموقف الحالي للملف، يمكنك استخدام f.seek (الإزاحة، from_what) وظيفة.

قيمة From_what، إذا كان هذا هو بداية 0 إلى، إذا كان هذا هو نهاية 1 إلى الوضع الحالي، 2 لملف، على سبيل المثال:

  • بحث (س، 0): من موضع بداية، وهذا هو السطر الأول من الحرف الأول من ملف يبدأ التحرك حرف X
  • بحث (س، 1): تشير الأحرف حركة س المتخلفة من الوضع الحالي
  • بحث (-x، 2): يظهر حرف X المحمولة من نهاية إلى الأمام للملف

القيمة الافتراضية هي 0 from_what، وهذا هو، بداية من الملف. وإليك مثال الكامل:

>>> f = open('/tmp/foo.txt', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5)     # 移动到文件的第六个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2) # 移动到文件的倒数第三字节
13
>>> f.read(1)
b'd'

f.close ()

في ملف نصي (لا ب تلك مفتوحا وضع الملفات) إلا فيما يتعلق بداية الملف لتحديد موقع.

عند الانتهاء من ذلك مع ملف، استدعاء f.close () لإغلاق الملف والإفراج عن موارد النظام، وإذا حاولت أن أشير إلى الملف، يتم طرح استثناء.

>>> f.close()
>>> f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: I/O operation on closed file
<pre>
<p>
当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短:</p>
<pre>
>>> with open('/tmp/foo.txt', 'r') as f:
...     read_data = f.read()
>>> f.closed
True

كائن ملف وهناك طرق أخرى، مثل isatty () وtrucate ()، ولكن هذه عادة ما تكون أقل من ذلك.


وحدة المخلل

وحدة الثعبان المخلل تنفذ تسلسل البيانات الأساسية وإلغاء التسلسل.

كنا قادرين على إنقاذ برنامج الهدف وحدة المخلل عملية التسلسل تشغيل المعلومات إلى ملف لتخزين دائم.

قبل إلغاء التسلسل حدة المخلل، يمكننا إنشاء برنامج لحفظ الكائن من الملف.

واجهة بسيطة:

pickle.dump(obj, file, [,protocol])

مع هذا المخلل كائن، لتكون قادرة على فتح الملف للقراءة:

x = pickle.load(file)

ملاحظة: اقرأ سلسلة من الملف، وإعادة بناء الأجسام الثعبان الأصلية.

ملف: كائن مثل ملف مع قراءة () ويقوم readline () واجهة.

مثال 1:

#!/usr/bin/python3
import pickle

# 使用pickle模块将数据对象保存到文件
data1 = {'a': [1, 2.0, 3, 4+6j],
         'b': ('string', u'Unicode string'),
         'c': None}

selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)

output = open('data.pkl', 'wb')

# Pickle dictionary using protocol 0.
pickle.dump(data1, output)

# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)

output.close()

مثال 2:

#!/usr/bin/python3
import pprint, pickle

#使用pickle模块从文件中重构python对象
pkl_file = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file)
pprint.pprint(data1)

data2 = pickle.load(pkl_file)
pprint.pprint(data2)

pkl_file.close()