一、标准输入与输出简介
Python通过内置的sys
模块管理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。但对大多数简单应用而言,直接使用内置函数就足够了。
二、输入:input()
函数
input()
函数是获取用户输入的最直接方式。它会暂停程序执行,等待用户在终端输入一些文本,然后按下回车键。
user_input = input("请输入你的名字:")
print(f"你好,{user_input}!欢迎来到Python世界。")
解释:
-
input()
函数显示提示信息“请输入你的名字:”,等待用户输入。 - 用户输入的内容被赋值给变量
user_input
。 -
print()
函数用于输出信息到屏幕上,这里使用f-string格式化字符串来包含用户的名字。
三、输出:print()
函数
print()
是最常用的输出函数,能够将文本或者变量的值打印到控制台。
message = "学习Python是有趣的!"
print(message)
number = 42
print("有意义的数字:", number)
解释:
- 第一个
print()
直接输出字符串。 - 第二个
print()
展示了如何输出文本与变量的组合,中间用逗号隔开,自动转换为字符串并添加空格。
四、格式化输出
为了更灵活地控制输出格式,可以使用f-string、format()
方法或百分号(%)格式化。
示例代码 (f-string):
age = 25
print(f"我今年{age}岁了。")
五、文件输入输出
除了标准输入输出,Python还允许读写文件,这是处理大量数据时的重要手段。
语法格式如下
#open(filename, mode)
f = open('/tmp/workfile', 'w')
- 第一个参数为要打开的文件名。
- 第二个参数描述文件如何使用的字符。 mode 可以是 'r' 如果文件只读, 'w' 只用于写 (如果存在同名文件则将被删除), 和 'a' 用于追加文件内容; 所写的任何数据都会被自动增加到末尾. 'r+' 同时用于读写。 mode 参数是可选的; 'r' 将是默认值。
文件对象的方法
f.read()
为了读取一个文件的内容,调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
f.readline()
f.readline() 会从文件中读取单独的一行。换行符为 '\n'。f.readline() 如果返回一个空字符串, 说明已经已经读取到最后一行。
遍历的话可以读取所有行
for line in f:
print(line,end='')
f.readlines()
f.readlines() 将返回该文件中包含的所有行。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
f.write()
f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。如果要写入一些不是字符串的东西, 那么将需要先进行转换:
f.tell()
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek()
如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
• seek(x, 0) : 从起始位置即文件首行首字符开始移动 x 个字符
• seek(x, 1) : 表示从当前位置往后移动x个字符
• seek(-x, 2):表示从文件的结尾往前移动x个字符
f.close()
在文本文件中 (那些打开文件的模式下没有 b 的), 只会相对于文件起始位置进行定位。
当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
f.flush()
刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
f.next()
返回文件下一行
示例代码 (文件写入):
with open('greeting.txt', 'w') as file:
file.write("你好,文件世界!")
示例代码 (文件读取):
with open('greeting.txt', 'r') as file:
content = file.read()
print(content)
解释:
- 使用
with
语句管理文件操作,确保文件正确关闭。 -
'w'
模式用于写入,会覆盖原有内容;'r'
模式用于读取。