[技术交流] python文件处理与输入输出

用户输入内容

将以下程序保存为 io_input.py :

def reverse(text): 
    return text[::-1] def is_backtext(text): 
    return text == reverse(text) something = input("请输入文字: ") if is_backtext(something): 
    print("是回文") else:
    print("不是回文")123456789

输出:

python io_input.py
输入文字: abc
不是回文

python io_input.py
输入文字: moom
是回文1234567

我们使用切片功能翻转文本。我们已经了解了我们可以通过使用 seq[a:b] 来从位置 a 开 始到位置 b 结束来对序列进行切片。我们同样可以提供第三个参数来确定切片的步长 (Step)。默认的步长为 1 ,它会返回一份连续的文本。如果给定一个负数步长,如 -1 , 将返回翻转过的文本。

input()函数可以接受一个字符串作为参数,并将其展示给用户。尔后它将等待用户输入内 容或敲击返回键。一旦用户输入了某些内容并敲下返回键, input() 函数将返回用户输入的 文本。

我们获得文本并将其进行翻转。如果原文本与翻转后的文本相同,则判断这一文本是回文。

文件

你可以通过创建一个属于 file 类的对象并适当使用它的 read 、 readline 、 write 方法 来打开或使用文件,并对它们进行读取或写入。读取或写入文件的能力取决于你指定以何种 方式打开文件。最后,当你完成了文件,你可以调用 close 方法来告诉 Python 我们已经完 成了对该文件的使用。

案例(保存为 io_using_file.py ):

poem = '''编程是很有趣的事件,
如果你想让你的工作也变得有趣的话:
使用Python!'''# 打开文件以编辑('w'riting) f = open('poem.txt', 'w',encoding='utf-8') # 向文件中编写文本 f.write(poem) # 关闭文件 f.close()# 如果没有特别指定, # 将假定启用默认的阅读('r'ead)模式 f = open('poem.txt') while True: 
    line = f.readline() 
    # 零长度指示 EOF 
    if len(line) == 0: 
        break # 每行(`line`)的末尾 
    # 都已经有了换行符 
    #因为它是从一个文件中进行读取的 
    print(line, end='') # 关闭文件 f.close()123456789101112131415161718192021222324

输出:

python io_using_file.py
编程是很有趣的事件,如果你想让你的工作也变得有趣的话:
使用Python!1234

它是如何工作的

首先,我们使用内置的 open 函数并指定文件名以及我们所希望使用的打开模式来打开一个 文件。

打开模式可以是阅读模式( ‘r’ ),写入模式( ‘w’ )和追加模式( ‘a’ )。

我们还 可以选择是通过文本模式( ‘t’ )还是二进制模式( ‘b’ )来读取、写入或追加文本。实际 上还有其它更多的模式可用, help(open) 会给你有关它们的更多细节。

在默认情况 下, open() 会将文件视作文本(text)文件,并以阅读(read)模式打开它

在我们的案例中,我们首先采用写入模式打开文件并使用文件对象的 write 方法来写入文 件,并在最后通过 close 关闭文件。

接下来,我们重新在阅读模式下打开同一个文件。我们不需要特别指定某种模式,因为“阅读 文本文件”是默认的。我们在循环中使用 readline 方法来读取文件的每一行。这一方法将会 一串完整的行,其中在行末尾还包含了换行符。当一个空字符串返回时,它表示我们已经到 达了文件末尾,并且通过 break 退出循环

最后,我们最终通过 close 关闭了文件。现在,你可以检查 poem.txt 文件的内容来确认程序确实对该文件进行了写入与读取操作。

encoding=utf-8

当我们阅读或写入某一文件或当我们希望与互联网上的其它计算机通信时,我们需要将我们 的 Unicode 字符串转换至一个能够被发送和接收的格式,这个格式叫作==“UTF-8”==。我们可以在 这一格式下进行读取与写入,只需使用一个简单的关键字参数到我们的标准 open 函数中: encoding=‘utf-8’

Unicode 有“统一码”“万国码”“国际码”等多种译名。