Latest web development tutorials

masukan Python3 dan output

Dalam beberapa bab pertama, kita telah benar-benar menyentuh masukan Python dan fungsi output. bab ini kita akan memperkenalkan Python input dan output tertentu.


format output mempercantik

Python cara dua nilai output: laporan ekspresi dan cetak (fungsi).

Cara ketiga adalah dengan menggunakan metode objek file write (), standar file output dapat digunakan sys.stdout referensi.

Jika Anda ingin output dalam bentuk yang lebih beragam, Anda dapat menggunakan str.format () fungsi untuk memformat nilai output.

Jika Anda ingin berubah menjadi nilai string output, Anda dapat menggunakan cetak ulang () atau fungsi str () untuk mencapai.

  • str (): mengembalikan fungsi bentuk yang dapat dibaca pengguna berekspresi.
  • cetak ulang (): menghasilkan bentuk ekspresi juru dibaca.

Misalnya

>>> 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'))"

Ada dua cara untuk output persegi dan kubus tabel:

>>> 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

Catatan: Dalam contoh pertama, ruang antara setiap kolom ditambahkan oleh cetak ().

Contoh ini menunjukkan metode rjust objek string (), yang dapat berupa string ke kanan, dan mengisi ruang di sebelah kiri.

Ada metode yang serupa, seperti ljust () dan pusat (). Metode ini tidak menulis apa-apa, mereka hanya mengembalikan string baru.

Metode lain zfill (), itu akan mengisi digit kiri 0, sebagai berikut:

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

str.format () Penggunaan dasar adalah sebagai berikut:

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

Dan dalam karakter kurung (disebut bidang format) akan diganti dengan parameter format () di.

Format posisi () dalam jumlah dalam tanda kurung digunakan untuk menunjuk objek yang masuk, sebagai berikut:

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

Jika argumen kata kunci () dalam format, maka nilai mereka akan mengarah ke nama parameter.

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

Lokasi dan kata kunci argumen dapat berupa kombinasi dari:

>>> print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'w3big',
                                                       other='Taobao'))
站点列表 Google, w3big, 和 Taobao。
'! A' (menggunakan ascii ()), (menggunakan str ()) dan (Menggunakan cetak ulang ()) dapat digunakan untuk memformat nilai sebelum transformasinya 'r!' 'S!':
>>> import math
>>> print('常量 PI 的值近似为: {}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。
>>> print('常量 PI 的值近似为: {!r}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。

Pilihan ':' diikuti dengan nama dan format yang identifier dapat lapangan. Hal ini memungkinkan untuk format nilai yang lebih baik. Contoh berikut akan mempertahankan Pi ke tiga tempat desimal:

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

Dalam ':' setelah melewati integer, Anda dapat setidaknya memastikan bahwa ada begitu banyak lebar domain. Berguna bila digunakan dalam bentuk lansekap.

>>> 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

Jika Anda memiliki format string yang panjang, dan Anda tidak ingin memisahkan mereka, maka ketika format dengan nama variabel daripada lokasi akan menjadi hal yang baik.

sederhana adalah untuk lulus dalam kamus dan kemudian menggunakan kurung siku '[]' untuk mengakses kunci:

>>> 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

Anda juga dapat menggunakan variabel sebelum meja '**' untuk mencapai fungsi yang sama:

>>> 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

string format gaya lama

Operator% dapat dicapai string format. Format string argumen ke kiri karena mirip dengan sprintf () rumus, dan hak substitusi, maka string diformat contoh kembali:

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

Karena str.format () fungsi relatif baru, sebagian besar kode Python masih menggunakan operator%. Namun, karena format lama ini akhirnya akan dihapus dari bahasa, Anda harus menggunakan lebih str.format ().


Baca input keyboard

Python memberikan input () fungsi input diatur untuk membaca baris teks dari standar, standar input default adalah keyboard.

masukan mungkin menerima ekspresi Python sebagai masukan dan mengembalikan hasil dari operasi.

#!/usr/bin/python3

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

Ini menghasilkan hasil sebagai berikut sesuai dengan input:

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

Membaca dan menulis file

open () mengembalikan file objek, dan sintaks dasar adalah sebagai berikut:

open(filename, mode)
  • nama file: variabel nama file adalah string yang berisi nilai yang Anda ingin mengakses nama file.
  • Mode: modus modus menentukan file terbuka: Baca, Tulis, menambahkan. Lihat daftar lengkap dari semua nilai yang mungkin sebagai berikut. parameter non-wajib ini, mode akses file default adalah read-only (r).

Membuka daftar lengkap dari modus yang berbeda file:

mode deskripsi
r Buka file dalam mode read-only. pointer file akan ditempatkan pada awal file. Ini adalah mode default.
rb Membuka file untuk read-only dalam format biner. Akan mengajukan pointer pada awal file. Ini adalah mode default.
r + Membuka file untuk membaca dan menulis. Akan mengajukan pointer pada awal file.
rb + Membuka file untuk membaca dan menulis dalam format biner. Akan mengajukan pointer pada awal file.
w Membuka file untuk menulis saja. Jika file sudah ada akan ditimpa. Jika file tidak ada, membuat file baru.
wb Membuka file untuk menulis dalam format biner saja. Jika file sudah ada akan ditimpa. Jika file tidak ada, membuat file baru.
w + Membuka file untuk membaca dan menulis. Jika file sudah ada akan ditimpa. Jika file tidak ada, membuat file baru.
wb + Membuka file untuk membaca dan menulis dalam format biner. Jika file sudah ada akan ditimpa. Jika file tidak ada, membuat file baru.
sebuah Membuka file untuk menambahkan. Jika file sudah ada, pointer file akan ditempatkan di akhir file. Dengan kata lain, setelah konten baru akan ditulis ke konten yang ada. Jika file tidak ada, membuat file baru untuk menulis.
ab Membuka file untuk append dalam format biner. Jika file sudah ada, pointer file akan ditempatkan di akhir file. Dengan kata lain, setelah konten baru akan ditulis ke konten yang ada. Jika file tidak ada, membuat file baru untuk menulis.
a + Membuka file untuk membaca dan menulis. Jika file sudah ada, pointer file akan ditempatkan di akhir file. Ini akan menambahkan modus file dibuka. Jika file tidak ada, membuat file baru untuk membaca dan menulis.
ab + Membuka file untuk append dalam format biner. Jika file sudah ada, pointer file akan ditempatkan di akhir file. Jika file tidak ada, membuat file baru untuk membaca dan menulis.

Contoh berikut akan ditulis ke foo.txt file dalam string:

#!/usr/bin/python3

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

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

# 关闭打开的文件
f.close()
  • Parameter pertama adalah nama file yang ingin Anda buka.
  • Karakter parameter kedua menjelaskan cara menggunakan file. Modus bisa 'r' Jika file yang read-only, 'w' untuk hanya menulis (jika file ada akan dihapus), dan 'a' untuk isi file tambahan; data tertulis akan secara otomatis ditambahkan ke akhir . 'r +' untuk kedua membaca dan menulis. Modus argumen opsional; 'r' akan menjadi nilai default.

Membuka foo.txt berkas, muncul sebagai berikut:

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

Metode file objek

Contoh ini mengasumsikan bahwa bagian yang tersisa telah menciptakan sebuah objek file bernama f ini.

f.read ()

Untuk membaca isi file, memanggil f.read (ukuran), yang akan membaca sejumlah data, dan kemudian kembali sebagai string atau byte objek.

Ukuran adalah parameter numerik opsional. Ketika ukuran diabaikan atau negatif, seluruh isi file akan dibaca dan kembali.

Contoh berikut mengasumsikan bahwa file foo.txt ada (dalam contoh di atas telah dibuat):

#!/usr/bin/python3

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

str = f.read()
print(str)

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

Program di atas, output adalah:

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

f.readline ()

f.readline () Anda membaca satu baris dari file tersebut. karakter baris baru '\ n'. f.readline () mengembalikan sebuah string kosong jika, menjelaskan bahwa itu telah membaca baris terakhir.

#!/usr/bin/python3

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

str = f.readline()
print(str)

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

Program di atas, output adalah:

Python 是一个非常好的语言。

f.readlines ()

f.readlines () akan mengembalikan semua baris yang terdapat dalam file.

Jika parameter opsional sizehint, kemudian membaca byte ditentukan panjang, dan byte ini dibagi dengan garis.

#!/usr/bin/python3

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

str = f.readlines()
print(str)

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

Program di atas, output adalah:

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

Cara lain adalah dengan iterate atas objek berkas dan kemudian membaca setiap baris:

#!/usr/bin/python3

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

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

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

Program di atas, output adalah:

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

Metode ini sangat sederhana, tetapi tidak memberikan kontrol yang baik. Baik karena mekanisme pengolahan yang berbeda, yang terbaik adalah untuk tidak mencampur.

f.write ()

f.write (string) String ditulis ke file, dan mengembalikan jumlah karakter yang ditulis.

#!/usr/bin/python3

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

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

Program di atas, output adalah:

29

Jika Anda ingin menulis beberapa hal yang tidak string, Anda akan perlu dikonversi:

#!/usr/bin/python3

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

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

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

Di atas Program, membuka file foo1.txt:

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

f.tell ()

f.tell () mengembalikan posisi file objek saat ini berada, itu adalah jumlah byte dari awal penghitungan berkas.

f.seek ()

Jika Anda ingin mengubah posisi saat file, Anda dapat menggunakan f.seek (offset, from_what) fungsi.

Nilai From_what, jika itu adalah awal dari 0 menunjukkan, jika itu adalah akhir dari 1 menunjukkan posisi saat ini, 2 file, misalnya:

  • mencari (x, 0): Dari posisi awal, yaitu baris pertama dari karakter pertama dari file mulai bergerak x karakter
  • mencari (x, 1): menunjukkan mundur gerakan x karakter dari posisi saat ini
  • mencari (-x, 2): menunjukkan x karakter mobile dari ujung depan file

Nilai default from_what adalah 0, yaitu awal file. Berikut adalah contoh lengkap:

>>> 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 ()

Dalam file teks (tidak b yang terbuka modus file) hanya berkenaan dengan awal file untuk mencari.

Setelah selesai dengan file, memanggil f.close () untuk menutup file dan melepaskan sumber daya sistem, jika Anda mencoba untuk mengingat file, eksepsi dilemparkan.

>>> 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

File objek Ada metode lain, seperti isatty () dan trucate (), tetapi ini biasanya kurang.


modul acar

Modul python acar mengimplementasikan urutan data dasar dan deserialization.

Kami mampu menyimpan sasaran program modul acar operasi serialisasi menjalankan informasi ke file untuk penyimpanan permanen.

Dengan modul acar deserialization, kita dapat membuat program untuk menyimpan objek dari file.

Antarmuka dasar:

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

Dengan objek acar ini, untuk dapat membuka file sebagai read:

x = pickle.load(file)

Catatan: Baca string dari file, dan rekonstruksi benda python aslinya.

File: file objek-seperti dengan membaca () dan readline () antarmuka.

Contoh 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()

Contoh 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()