`
ikeycn
  • 浏览: 146255 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Python入门系列:Input/Output

阅读更多
引言
在一些场景中,你的程序需要与用户交互。例如你想接收用户的输入并打印一些结果作为反馈。我们已经分别通过input()和print()函数实现了这个过程。
在输出窗口,有时我们需要看到str(string)类的各种方法。例如你可以使用rjust方法获得一个指定宽度的右对齐的字符串,更多细节通过help(str)获得。
input/output另外一个常用的方式是对文件的操作。对于很多程序来说,创建、读取和写回文件是不可或缺的部分,下面的部分将向你展示这些应用。

Input from user
# 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

执行过程:
我们使用slicing方式对字符串进行反转,在sequence部分,我们已经看到了如何通过使用seq[a:b]的方式进行slice操作来获得从a到b位置之间的元素。同时我们提供第三个参数用指定slice操作的步长。默认的步长是1用来返回原文本中的一段连续的内容。程序中我们指定步长为-1,从而获得了文本的反转形式(即实现文本的前后倒置)。
input()函数使用了一个字符串参数来提供用户输入,然后开始等待用户输入内容,并按下回车键,而input()函数就会返回用户刚刚输入的内容。我们接收用户输入的文本内容,并对之进行了反转。如果原文本与反转后的文本相同,那些原文本就是回文的(palindrome,正向和反向读取的内容相同)。

Files
你可以通过创建file对象来打开和使用文件,用于读取或写入内容,也可以使用合适的read, readline和write方法来对文件进行读取或者写入内容。最后,当你对文件操作完成后,你需要使用close方法告诉Python我们对文件使用已经结束。
下面的代码演示了file的简单用法:
# 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') # open for 'w'riting
f.write(poem) # write text to file
f.close() # close the file
f = open('poem.txt') # if no mode is specified, 'r'ead mode is assumed
by default
while True:
line = f.readline()
if len(line) == 0: # Zero length indicates EOF
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!

执行过程:
首先通过python内置的open函数打开文件,使用该方法时需要为其指定文件名称和打开的模式。python提供的可选的模式有:读('r'),写('w')和追加(append)('a')。同时我们也可以指定处理的文件是文本文件('t')或者二进制文件('b'),例open('poem.txt', 'wt')将以写模式打开名称为'poem.txt'的文本文件。事实上还有更多的模式使用,详细信息可以通过help(open)来获得。open()默认以读('r')模式以文本形式('t')打开文件。
在上面的例子中,我们首先以写文本模式打开文件,然后使用file对象的write方法对文件进行写入,然后使用close关闭文件。
然后我们以读模式再次打开文件。因为“读文本”模式是open的默认模式,所以我们不需要指定模式。我们在循环中通过readline依次读入每一行内容。readline方法会返回一个完整的行,其中包括该行末尾用来标示新行的字符。当返回的字符串为空(len(f.readline())==0)时,这就意思着我们已经到达了文件的末尾,从而跳出了循环。
默认情况下,print()函数会对输出的每一行结束后进行换行。我们可以通过指定end=' '使print不进行换行,因为从文件中读出的每一行中包含了一个换行符。最后我们关闭文件。
现在,你可以查看poem.txt文件的内容,确信程序的确对该文件进行了写操作和读操作。

Pickle
Python标准模块库中提供了一个用来存储把任何python对象存储到文件中,然后再恢复成python对象的模块,这个模块叫做pickle。我们把这种对对象的存储称为持久化(persistently)。
下面的代码演示了pickle的简单使用:
# 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) # dump the object to a file
f.close()
del shoplist # destroy the shoplist variable
# Read back from the storage
f = open(shoplistfile, 'rb')
storedlist = pickle.load(f) # load the object from the file
print(storedlist)

输出结果:
$ python pickling.py
['apple', 'mango', 'carrot']

执行过程:
为了把对象保存到文件中,我们首先以"写二进制('wb')"的模式打开一个文件,然后调用pickle模块中的dump方法,我们称这个过程为pickling。然后我们通过执行pickle模块的load函数从文件中加载对象,我们称这个过程为unpickling。

说明:该文章从 A byte of Python v1.92 for Python3.0翻译而来,望指正
分享到:
评论

相关推荐

    Python操作Excel把数据分给sheet

    需求:根据country列的不同值,将内容分到不同sheet 方法一: 读取原Excel,根据country列将不同的内容放到...output_file = F://python入门//数据2//output.xlsx data_frame = pd.read_excel(input_file,sheet_name=

    blink_esp32编程_Blink实验_blink_blink程序_

    3. **配置LED端口**:在`menuconfig`配置菜单中,你可以指定LED连接到ESP32的GPIO(General-Purpose Input/Output)引脚。通常,LED的阳极连接到ESP32的高电平输入,阴极连接到一个下拉电阻,然后到地。在ESP32上,...

    python基础入门(超详细).pdf

    以下是一些关于Python基础入门的知识点: 1. **Input和Output**:`input()` 函数用于从用户那里获取输入,例如在例子中用来获取密码。`print()` 函数则用于在控制台输出信息。在示例中,它被用来显示用户输入的密码...

    树莓派实用教程

    - GPIO(General Purpose Input/Output)通用输入输出接口,用于与外部设备交互。 **测试步骤:** 1. **导入GPIO库:** - 在Python环境中输入`import RPi.GPIO`,无错误提示表示GPIO可用。 2. **LED灯控制:** - ...

    Python3从入门到精通习题答案.docx.docx

    继续学习中,我们还可以深入探索 Python 的其他方面,例如列表、元组、字典、集合、函数、异常处理、文件-input/output 等等。 Python 的应用非常广泛,我们可以使用 Python 来进行数据分析、人工智能、机器学习、...

    ThinkPython-cn PDF

    《ThinkPython-cn》是一本专为中文读者设计的Python编程入门教材。这本书旨在教授初学者如何使用Python语言进行编程,涵盖了从基础语法到高级概念的全面知识。在深入讲解Python编程的同时,它还注重培养读者的逻辑...

    Python入门 PythonTutorial

    ### Python入门教程知识点详解 #### 一、Whetting Your Appetite(激发兴趣) - **简介**:本章节作为开篇,旨在通过一个简单的例子来激发读者对Python编程的兴趣。 - **示例代码**:通常会给出一个简单的Python...

    Python入门.ppt

    【Python入门】 Python是一种高级编程语言,以其简洁明了的语法和强大的功能著称。在2021年版的精选课件中,我们详细介绍了Python的特点、开发环境、程序编写方法、程序编写步骤以及一些常用的基础知识。 1. **...

    Python脚本入门学习经典手册

    ### Python脚本入门学习经典手册 #### Python语言基础 **1. 数学运算符** Python支持多种数学运算符,包括但不限于加法(+)、减法(-)、乘法(*)、除法(/)、整除(//)、取模(%)和幂(**)。例如: - ...

    microPython.pdf

    4. **Input/Output**: 管理输入输出设备,如传感器和显示器。 5. **Music**: 播放和控制音乐的功能。 6. **Random**: 生成随机数的方法。 7. **Movement**: 控制运动传感器(如加速度计)的能力。 8. **Gestures**: ...

    python入门简介,带你初步了解python

    ### Python入门简介及基础知识 #### 一、编程与Python简介 1. **什么是编程:** - 编程,简而言之,就是通过特定的“语言”与计算机进行沟通的过程。这里的“语言”指的是编程语言,它有严格的语法规则和词汇构成...

    AK-DE-biGRU:通过结合领域知识来改进多回合对话系统中的响应选择

    具有双向GRU(AK-DE-biGRU)的注意力和外部知识增强的双编码器实施该文件的代码:“”入门我们使用的是python 3.6.4版,请安装requirements.txt文件,并安装pytorch版本:“ 0.3.1.post2”先决条件从Wu等人下载...

    Python入门培训资料.ppt.ppt

    【Python入门培训资料】 Python是一种高级编程语言,以其简洁、高效和强大的功能受到广大程序员的青睐。本资料详细介绍了Python的基础知识,包括安装、编程方法、程序编写步骤以及常用基础知识,适合初学者学习。 ...

    MOOC 《零基础学 Python 语言》LaTex 笔记,122页,Python 快速入门教程

    - **基本的程序设计方法 IPO**:输入(Input)、处理(Processing)、输出(Output),这是一种常用的程序设计思路。 ##### 第 2 周:Python 程序入门 - **Python 程序设计实例剖析**:通过实例讲解 Python 编程的基本...

    初学入门ArcGIS中Python脚本

    ### 初学入门ArcGIS中Python脚本 #### Python语言基础 **数学运算符** Python支持多种基本数学运算,包括加法(+)、减法(-)、乘法(*)、除法(/)、整数除法(//)、取余(%)、幂(**)。例如: - 加法:`a ...

    毕设项目基于遮挡视频实例分割的裸眼3D实现python源码+文档运行说明.zip

    CUDA_VISIBLE_DEVICES=0 python demo/autostereoscopy.py --config-file configs/genvis/ovis/genvis_R50_bs8_online.yaml --video-input /path/to/video --output /path/to/output --opts MODEL.WEIGHTS /path/to/...

    Python Tutorial 入门指南3.6英文版

    7. Input and Output 70 7.1. Fancier Output Formatting 70 7.1.1. Old string formatting 75 7.2. Reading and Writing Files 76 7.2.1. Methods of File Objects 77 7.2.2. Saving structured data with json 79 ...

    python树莓派红外反射传感器

    ### Python树莓派红外反射传感器知识点详解 #### 一、引言 在现代电子技术领域,传感器的应用极为广泛,尤其在机器人技术、自动化控制、智能家居等领域发挥着重要作用。红外反射传感器作为常见的一种传感器类型,...

    PecanPy:node2vec的快速,并行化,内存高效和缓存优化的Python实现

    PecanPy:Python中并行,高效且加速的node2vec 学习大型图中节点的低维表示(嵌入)是在大型生物网络上应用机器学习的关键。 Node2vec是使用最广泛的节点嵌入方法。 PecanPy是一种快速,并行,高效存储和缓存优化...

Global site tag (gtag.js) - Google Analytics