简介

一些情况下你不得不让程序与用户进行交互。例如,你需要从用户处得到输入然后输出计算结果。我们可以分别通过input()print()函数做到这些。

对于输出,我们还可以使用str(string)类的各种方法。例如rjust方法可以得到一个指定宽度的右对齐字符串。详见help(str)

另一种常见的输入/输出类型为文件处理。对于很多程序拥有创建,读写文件的能力是必不可少的,我们会在这节探究这些内容。

得到用户输入

#!/usr/bin/python

# user_input.py

def reverse(text):

return text[::-1]

def is_palindrome(text):

return text == reverse(text)

something = input('Enter text: ')

if (is_palindrome(something)):

print("Yes, it is a palindrome")

else:

print("No, it is not a palindrome")

输出:

$ python user_input.py

Enter text: sir

No, it is not a palindrome

$ python user_input.py

Enter text: madam

Yes, it is a palindrome

$ python user_input.py

Enter text: racecar

Yes, it is a palindrome

范例如何工作:

范例中我们使用切片操作反转文本。之前我们已经学过如何通过seq[a:b](从a开始止于b)对序列切片。

对于切片操作我们还可以指定第三个参数步长,步长默认为1将返回文本的一个连续部分。而给定一个负步长-1将返回反转后的文本。

input()函数接收一个字符串实参并将其打印给用户,然后函数等待用户输入一些东西,一但用户按下回车键则输入结束,input函数将返回输入的文本。

之后我们反转文本,如果反转后的文本与原文本相同,则代表它是一个回文(http://en.wiktionary.org/wiki/palindrome)。

练习题:

检测一个文本是否为回文应该忽略标点,空格和大小写。

例如”Rise to vote, sit.”同样是一个回文,但是我们当前的例子无法识别它。你能改善这个例子让它做都这点吗?

文件

通过创建file类对象,使用其read, readlinewrite方法你可以对文件进行读写。

具体读或写的方式依赖于你打开文件时指定的模式。

最后当你完成文件操作时调用close关闭文件。

范例:

#!/usr/bin/python

# Filename: using_file.py

poem = '''/

Programming is fun

When the work is done

if you wanna make your work also fun:

use Python!

'''

f = open('poem.txt', 'w') # 写模式打开

f.write(poem) # 写文件

f.close() # 关闭文件

f = open('poem.txt') # 如果没有提供打开模式, 则默认假设为读模式

while True:

line = f.readline()

if len(line) == 0: # 长度为0代表EOF(注: end of file即文件尾)

break

print(line, end='')

f.close() # close the file

输出:

$ python using_file.py

Programming is fun

When the work is done

if you wanna make your work also fun:

use Python!

范例如何工作:

首先,我们通过内建函数open打开一个文件,在函数中我们指定了被打开文件的文件名与希望使用的打开模式。

其中打开模式可以为读模式(‘r’),写模式(‘w’)或追加模式(‘a’)。另外我们也可以处理文件文件(‘t’)和二进制文件(‘b’)。

实际上还有很多模式可用,详见help(open)。默认的open将文件对待为文本文件’t’,并以读模式’r’打开。

在范例中,我们首先以写文本模式打开文件,使用文件对象的write方法写文件,并调用close将其关闭。

然后我们再次打开相同的文件用于读取。这里我们无需指定打开模式因为’读文本文件’是open的默认模式。

在循环中我们使用readline方法读取文件的每一行。这个方法返回一整行文本其中包括末尾的换行符。

当返回一个空字符串时,意味着我们已经来到文件尾,因此使用break跳出循环。

默认的,print()函数将自动打印一个换行。因为从文件读出的文本行末尾已经包含一个换行,所以我们指定参数end=’’抑制换行。

最后我们关闭文件。

现在,检查poem.txt文件内容以确定程序真的写入并读取了文件。

Pickle

python提供了一个名为pickle的标准模块用于将任意python对象存入文件或从文件中读出。这被称做永久性存储对象(persistently)。

范例:

#!/usr/bin/python

# Filename: pickling.py

import pickle

# the name of the file where we will store the object

shoplistfile = 'shoplist.data'

# the list of things to buy

shoplist = ['apple', 'mango', 'carrot']

# Write to the file

f = open(shoplistfile, 'wb')

pickle.dump(shoplist, f) # 转储对象到文件

f.close()

del shoplist # 销毁shoplist变量

# 从文件找回对象

f = open(shoplistfile, 'rb')

storedlist = pickle.load(f) # 从文件加载对象

print(storedlist)

输出:

$ python pickling.py

['apple', 'mango', 'carrot']

范例如何工作:

为了将对象存储到文件,我们必须首先’wb’写二进制文件模式打开文件然后调用pickle模块的dump函数。这个过程叫做封藏(pickling)对象。

接下来我们使用pickle的load函数重新找回对象。这个过程叫做解封(unpickling)对象。

小结

我们已经讨论了各种形式的输入/输出,和利用pickle模块进行文件处理。

接下来,我们将会学习异常处理。

简明Python3教程 14.输入输出的更多相关文章

  1. 简明Python3教程(A Byte of Python 3)

    关键字:[A Byte of Python v1.92(for Python 3.0)] [A Byte of Python3] 简明Python教程 Python教程 简明Python3教程  简明 ...

  2. 简明Python3教程 18.下一步是什么

    如果你有认真通读本书之前的内容并且实践其中包含的大量例程,那么你现在一定可以熟练使用python了. 同时你可能也编写了一些程序用于验证python特性并提高你的python技能.如果还没有这样做的话 ...

  3. 简明Python3教程 16.标准库

    简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的 ...

  4. 简明Python3教程 9.函数

    简介 函数是程序的可复用片段,允许你为语句块赋予名字之后在程序的任何地方运行它们任意次,这称做函数调用. 我们已经使用过一些内建函数,例如len和range等. 函数也许是任何有意义的软件中最重要的构 ...

  5. 简明Python3教程 7.运算符和表达式

    简介 你写的大多数逻辑行都包含表达式.表达式的一个简单例子是2 + 3.一个表达式可分为操作符和操作数两部分. 操作符的功能是执行一项任务:操作符可由一个符号或关键字代表,如+ .操作符需要数据以供执 ...

  6. 简明Python3教程 6.基础

    你肯定不满足于只打印"Hello World"吧? 你想要的更多 - 你希望得到一些输入,操纵它后再从中得到某些东西.我们可以使用python中的常量和变量实现这些功能. 字面常量 ...

  7. 简明Python3教程 5.第一步

    介绍 我们现在来看看如何在Python中运行传统的”Hello world”程序.这会教你如何写.保存以及运行Python程序. 有两种办法来运行您的Python程序——使用交互式的解释器提示符或者源 ...

  8. 简明Python3教程 4.安装

    如果你已经安装了Python 2.x,你不需要在安装Python 3.0前卸载Python 2.x.这两者可以共存. GNU/Linux用户和BSD用户 如果你使用类似于Ubuntu.Fedora.O ...

  9. 简明Python3教程 2.序言

    Python也许是为数不多的既简单又强大的编程语言.这有利于新手甚至于专家,更重要的是用它编程所带来的乐趣. 这本书的目的是帮助您了解这种神奇的语言,展示如何快速而轻松地完成事情——事实上”编程问题的 ...

随机推荐

  1. Oracle性能分析12:对象统计信息

    对象统计信息描写叙述数据是如何在数据库中存储的,查询优化器使用这些统计信息来做出正确的决定.Oracle中有三种类型的对象统计信息:表统计.列统计和索引统计.而在每种类型中,有细分为:表或索引级别的统 ...

  2. [译]基于Vue.js的10个最佳UI框架,用于构建移动应用程序

    原文查看10 Best Vue.js based UI Frameworks for Building Mobile Apps 如果您期待使用Vue.js构建移动应用程序,那么您可以选择许多可用的UI ...

  3. 【Codeforces Round #439 (Div. 2) B】The Eternal Immortality

    [链接] 链接 [题意] 求b!/a!的最后一位数字 [题解] b-a>=20的话 a+1..b之间肯定有因子2和因子5 答案一定是0 否则暴力就好 [错的次数] 在这里输入错的次数 [反思] ...

  4. ios_webView

    iOS开发中WebView的使用 在AppDelegate.m文件里 view sourceprint" class="item about" style="c ...

  5. okhttp的简介(二)之简单封装

    前一篇文章简单的介绍了okhttp的简单使用.okhttp的简介(一):http://blog.csdn.net/wuyinlei/article/details/50579564 相信使用还是非常好 ...

  6. 微服务API模拟框架frock介绍

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/introducing-frock Urban Airship是一家帮助 ...

  7. [Now] Update an application hosted with Zeit’s Now

    Because now deploys are immutable, you can’t push changes to a running instance - you just push a ne ...

  8. XxPay支付系统-boot版本了解一下

    了解一下 之前看了龙果支付系统,也没看透,用公司框架改写,然后就改的比较乱

  9. [React Router v4] Intercept Route Changes

    If a user has entered some input, or the current Route is in a “dirty” state and we want to confirm ...

  10. 关于ulimit -a中需要修改的两个值

    以root用户运行 ulimit -a 命令,其中有两个参数分别为: open files和max user processes   修改方法:  vi /etc/security/limits.co ...