Latest web development tutorials

Python3 wejście i wyjście

W ciągu kilku pierwszych rozdziałach, mamy rzeczywiście dotknął wejście Python i funkcję wyjścia. W tym rozdziale będziemy wprowadzać Pythona konkretne wejście i wyjście.


Format wyjściowy upiększyć

Python sposób dwie wartości wyjściowych: sprawozdanie ekspresyjne i funkcja print ().

Trzecim sposobem jest użycie metody obiektu File Napiszmy (), standardowy plik wyjściowy może być używany sys.stdout odniesienia.

Jeśli chcesz wstawić w formie bardziej zróżnicowana, można użyć str.format funkcji (), aby sformatować wartość wyjściową.

Jeśli chcesz, aby przekształcić się w wartości ciągu wyjścia, można użyć repr () lub funkcji str () do osiągnięcia.

  • Str (): Funkcja zwraca użytkownika czytelną formę wyrazu.
  • repr () generuje formę ekspresji tłumacza czytelnym.

Na przykład

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

Istnieją dwa sposoby na wyjście kwadratu i sześcianu tabele:

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

Uwaga: W pierwszym przykładzie, przestrzeń pomiędzy kolumnami dodano przez druku ().

Ten przykład pokazuje sposób rjust obiektu string (), która może być ciągiem z prawej strony i wypełnić przestrzeń po lewej stronie.

Istnieją podobne metody, takie jak Ljust () i środka (). Metody te nie pisać nic, po prostu zwraca nowy ciąg znaków.

Inną metodą zfill (), to wypełnić lewej cyfra 0, co następuje:

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

str.format () Podstawowym zastosowaniem jest następujący:

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

A w środku znaków nawiasów (zwane pola format) zostanie zastąpiony parametru Format () w.

formacie pozycyjnym (), liczby w nawiasach jest używane do wskazywania obiektu przychodzącego, w następujący sposób:

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

Jeżeli argument słowa kluczowego () w formacie, a następnie ich wartość będzie wskazywać na nazwę parametru.

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

Położenie i słów kluczowych argumentów może być dowolna kombinacja:

>>> print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'w3big',
                                                       other='Taobao'))
站点列表 Google, w3big, 和 Taobao。
! 'A' (za pomocą ASCII ()), (używając str ()) i (Korzystanie repr ()) może być użyty do wyświetlania wartości przed przekształceniem "r! '' S! ':
>>> import math
>>> print('常量 PI 的值近似为: {}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。
>>> print('常量 PI 的值近似为: {!r}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。

Opcje ':' a następnie nazwy i formatu identyfikatora może polu. Pozwala to na lepsze postaci wartości. Poniższy przykład zachowa Pi dokładnością do trzech miejsc po przecinku:

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

W ':' po przejściu liczbę całkowitą, można przynajmniej upewnić się, że istnieje tak wiele szerokość domeny. Przydatne, gdy stosuje się w postaci krajobrazu.

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

Jeśli masz długi ciąg formatu, a ty nie chcesz, aby je rozdzielić, a następnie przy formatowaniu od nazwy zmiennej zamiast miejscu byłoby dobrą rzeczą.

Najprostszym jest przekazanie w słowniku, a następnie za pomocą nawiasów kwadratowych "[]", aby uzyskać dostęp do klucza:

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

Można również użyć zmiennej przed tabelą '**', aby osiągnąć tę samą funkcjonalność:

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

formatowanie ciąg starym stylu

Operator% może zostać osiągnięty formatowania napisów. Format ciąg argumentu w lewo, ponieważ jest podobny do wzoru sprintf (), a prawa substytucji, a następnie zwrócony ciąg sformatowany przykład:

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

Ponieważ str.format function () jest stosunkowo nowy, większość kodu Pythona wciąż używa operatora%. Jednakże, ponieważ ten stary format zostanie ostatecznie usunięte z języka, należy użyć więcej str.format ().


Czytaj klawiatura

Python zapewnia funkcja input () wejścia jest ustawiony, aby przeczytać wiersz tekstu od normy, domyślnym standardowym wejściem jest klawiatura.

Wejście może otrzymać wyrażenie Pythona jako wejście i zwraca wynik operacji.

#!/usr/bin/python3

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

To daje następujące wyniki odpowiadające wejściu:

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

Odczyt i zapis plików

open () zwraca obiekt pliku, a Podstawowa składnia jest następująca:

open(filename, mode)
  • Nazwa pliku: Zmienna nazwa pliku jest ciąg zawierający wartość, którą chcesz uzyskać dostęp do nazwy pliku.
  • Tryb: Tryb określa otwarty plik: odczyt, zapis, dopisywania. Zobacz pełną listę wszystkich możliwych wartości w następujący sposób. Ten parametr jest nieobowiązkowa, tryb dostępu domyślny plik jest tylko do odczytu (R).

Otworzyć pełną listę różnych rodzajów plików:

tryb opis
R Otwórz plik w trybie tylko do odczytu. Plik wskaźnik zostanie umieszczony na początku pliku. Jest to tryb domyślny.
rb Otworzyć plik do odczytu tylko w formacie binarnym. Złoży wskaźnik na początku pliku. Jest to tryb domyślny.
R + Otwórz plik do odczytu i zapisu. Złoży wskaźnik na początku pliku.
rb + Otwórz plik do odczytu i zapisu danych w formacie binarnym. Złoży wskaźnik na początku pliku.
w Otwórz plik tylko do zapisu. Jeśli plik już istnieje, to zostanie nadpisany. Jeśli plik nie istnieje, utwórz nowy plik.
WB Otwórz plik do zapisu tylko w formacie binarnym. Jeśli plik już istnieje, to zostanie nadpisany. Jeśli plik nie istnieje, utwórz nowy plik.
w + Otwórz plik do odczytu i zapisu. Jeśli plik już istnieje, to zostanie nadpisany. Jeśli plik nie istnieje, utwórz nowy plik.
WB + Otwórz plik do odczytu i zapisu danych w formacie binarnym. Jeśli plik już istnieje, to zostanie nadpisany. Jeśli plik nie istnieje, utwórz nowy plik.
Otwórz plik do dopisywania. Jeśli plik już istnieje, wskaźnik plik zostanie umieszczony na końcu pliku. Innymi słowy, po nowej treści zostanie zapisany na istniejącej zawartości. Jeśli plik nie istnieje, utwórz nowy plik do zapisu.
ab Otworzyć plik do dopisywania w formacie binarnym. Jeśli plik już istnieje, wskaźnik plik zostanie umieszczony na końcu pliku. Innymi słowy, po nowej treści zostanie zapisany na istniejącej zawartości. Jeśli plik nie istnieje, utwórz nowy plik do zapisu.
a + Otwórz plik do odczytu i zapisu. Jeśli plik już istnieje, wskaźnik plik zostanie umieszczony na końcu pliku. Będzie tryb plik jest otwierany dołączyć. Jeśli plik nie istnieje, utwórz nowy plik do odczytu i zapisu.
ab + Otworzyć plik do dopisywania w formacie binarnym. Jeśli plik już istnieje, wskaźnik plik zostanie umieszczony na końcu pliku. Jeśli plik nie istnieje, utwórz nowy plik do odczytu i zapisu.

Poniższe przykłady zostaną zapisane do pliku foo.txt w ciągu:

#!/usr/bin/python3

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

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

# 关闭打开的文件
f.close()
  • Pierwszy parametr to nazwa pliku, który chcesz otworzyć.
  • Charakter Drugi parametr opisuje, w jaki sposób skorzystać z pliku. Tryb ten może być 'r' Jeśli plik jest tylko do odczytu 'w' bo tylko pisemnie (jeśli plik istnieje, zostanie ona usunięta), a "a" dla dodatkowych zawartości plików, wszelkie dane zapisane zostanie automatycznie dodany do końca . 'r +' zarówno dla odczytu i zapisu. Argument tryb jest opcjonalny; "r" będzie wartość domyślna.

Otwiera foo.txt pliku, wygląda następująco:

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

Metoda obiektów plików

W tym przykładzie założono, że pozostały odcinek stworzyła obiekt pliku o nazwie f-tych.

f.read ()

Aby odczytać zawartość pliku, zadzwoń f.read (rozmiar), która będzie czytać pewną liczbę danych, a następnie powrócił jako ciąg bajtów lub obiektu.

rozmiar jest opcjonalny parametr numeryczny. Gdy rozmiar jest ignorowany lub jest ujemna, cała zawartość pliku zostanie odczytany i zwrócone.

W poniższym przykładzie założono, że foo.txt plik istnieje (w powyższym przykładzie została utworzona):

#!/usr/bin/python3

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

str = f.read()
print(str)

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

Powyższy program, wyjście jest:

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

f.readline ()

f.readline () można przeczytać nawet jednej linii z pliku. Znak nowej linii '\ n'. f.readline () zwraca pusty ciąg znaków, jeśli wyjaśnił, że został przeczytany ostatnim rzędzie.

#!/usr/bin/python3

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

str = f.readline()
print(str)

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

Powyższy program, wyjście jest:

Python 是一个非常好的语言。

f.readlines ()

f.readlines () zwróci wszystkie wiersze zawarte w pliku.

Jeśli opcjonalne parametry sizehint, a następnie odczytać bajtów określonej długości, a te bajty podzielone przez linię.

#!/usr/bin/python3

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

str = f.readlines()
print(str)

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

Powyższy program, wyjście jest:

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

Innym sposobem jest iteracyjne nad obiektu pliku, a następnie czyta każdą linię:

#!/usr/bin/python3

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

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

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

Powyższy program, wyjście jest:

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

Metoda ta jest bardzo prosta, ale to nie zapewnia dobrą kontrolę. Zarówno ze względu na inny mechanizm przetwarzania, to najlepiej nie mieszać.

f.write ()

f.write (ciąg) Ciąg zapisywane w pliku i zwraca liczbę znaków pisanych.

#!/usr/bin/python3

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

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

Powyższy program, wyjście jest:

29

Jeśli chcesz napisać niektóre z rzeczy, które nie jest ciągiem znaków, trzeba będzie przeprowadzić:

#!/usr/bin/python3

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

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

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

Powyższy program, otwórz plik foo1.txt:

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

f.tell ()

f.tell () zwraca położenie obiektu File jest aktualnie znajduje, jest to liczba bajtów od początku liczenia plików.

f.seek ()

Jeśli chcesz zmienić aktualną pozycję pliku, można użyć f.seek (offset, od_czego) funkcji.

Wartość od_czego, jeśli jest to początek 0 wskazuje, czy to jest koniec 1 wskazuje aktualną pozycję, 2 dla pliku, na przykład:

  • seek (x, 0): Z pozycji startowej, która jest pierwszą linią pierwszego znaku w pliku zaczyna się poruszać x znaków
  • poszukiwania (x, 1): wskazuje ruch do tyłu x znaki od bieżącej pozycji
  • poszukiwania (X 2) przedstawia sieć komórkową x znaków z przedniego końca pliku

od_czego Domyślna wartość 0, to znaczy na początku pliku. Oto pełna przykładów:

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

W pliku tekstowym (nie B substancje tryb otwartych plików) tylko w odniesieniu do początku pliku do zlokalizowania.

Kiedy skończysz z plikiem, zadzwoń f.close (), aby zamknąć plik i zwolnić zasoby systemowe, jeśli starają się przywołać plik jest wyjątek.

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

obiekt pliku Istnieją inne sposoby, takie jak isatty () i trucate (), ale zwykle są one mniej.


moduł marynowane

Moduł Pythona marynowane realizuje podstawową sekwencję danych i deserializacji.

Udało nam się uratować modułu marynowane docelowego programu operacyjnego serializacji systemem informacji w pliku do pamięci nieulotnej.

Przez moduł Peklowanie deserializacji możemy stworzyć program, aby zapisać obiekt z pliku.

Podstawowy interfejs:

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

Z tego obiektu zalewie, aby móc otworzyć plik jako przeczytane:

x = pickle.load(file)

Uwaga: Przeczytaj ciąg z pliku, a rekonstrukcję oryginalnych obiektów Pythona.

file: file-jak obiekt o read () i readline () interfejsu.

Przykład 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()

Przykład 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()